Created
February 17, 2020 02:11
-
-
Save boisei0/190cb3349159613ccc540155f27b6b34 to your computer and use it in GitHub Desktop.
Fanfic pocket archive library recommendation algorithm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private void generateRecs() { | |
this.query = new SearchQuery(); | |
long longPref = Prefs.getLongPref(this, Prefs.RECS_DATE); | |
if (longPref <= 0 || new Date().getTime() - longPref >= DateUtils.MILLIS_PER_DAY) { | |
try { | |
List<WorkItem> loadAll = ((ReaderApplication) getApplication()).openDb().getWorkItemDao().loadAll(); | |
int i = 0; | |
for (WorkItem workItem : loadAll) { | |
StringBuilder stringBuilder = new StringBuilder(); | |
SearchQuery searchQuery = this.query; | |
stringBuilder.append(searchQuery.tag); | |
stringBuilder.append("("); | |
searchQuery.tag = stringBuilder.toString(); | |
List fandomIds = workItem.getFandomIds(); | |
List relationshipIds = workItem.getRelationshipIds(); | |
if (fandomIds.size() > 0) { | |
Fandom fandom = ((WorkFandom) fandomIds.get(0)).getFandom(); | |
if (!(fandom == null || this.query.tag.contains(fandom.getFandomName()))) { | |
StringBuilder stringBuilder2 = new StringBuilder(); | |
SearchQuery searchQuery2 = this.query; | |
stringBuilder2.append(searchQuery2.tag); | |
stringBuilder2.append(fandom.getFandomName()); | |
searchQuery2.tag = stringBuilder2.toString(); | |
} | |
} | |
if (relationshipIds.size() > 0) { | |
Relationship relationship = ((WorkRelationship) relationshipIds.get(0)).getRelationship(); | |
if (!(relationship == null || this.query.tag.contains(relationship.getRelationshipName()))) { | |
stringBuilder = new StringBuilder(); | |
searchQuery = this.query; | |
stringBuilder.append(searchQuery.tag); | |
stringBuilder.append(", "); | |
searchQuery.tag = stringBuilder.toString(); | |
stringBuilder = new StringBuilder(); | |
searchQuery = this.query; | |
stringBuilder.append(searchQuery.tag); | |
stringBuilder.append(relationship.getRelationshipName()); | |
searchQuery.tag = stringBuilder.toString(); | |
} | |
} | |
StringBuilder stringBuilder3 = new StringBuilder(); | |
SearchQuery searchQuery3 = this.query; | |
stringBuilder3.append(searchQuery3.tag); | |
stringBuilder3.append(")"); | |
searchQuery3.tag = stringBuilder3.toString(); | |
if (i != loadAll.size() - 1) { | |
stringBuilder3 = new StringBuilder(); | |
searchQuery3 = this.query; | |
stringBuilder3.append(searchQuery3.tag); | |
stringBuilder3.append(" || "); | |
searchQuery3.tag = stringBuilder3.toString(); | |
} | |
i++; | |
} | |
Prefs.setLongPref(this, Prefs.RECS_DATE, new Date().getTime()); | |
Prefs.setStringPref(this, Prefs.RECS_QUERY_TAG, this.query.tag); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
TastyToast.makeText(this, getString(C1362R.string.cant_gen_recs), 0, 3); | |
Answers.getInstance().logCustom((CustomEvent) new CustomEvent("Recs_Err").putCustomAttribute("Recs", e.getMessage())); | |
} | |
return; | |
} | |
this.query.tag = Prefs.getStringPref(this, Prefs.RECS_QUERY_TAG); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment