Giter VIP home page Giter VIP logo

malgraph4's Introduction

MALgraph is an extension of your MyAnimeList profile, showing you lots of stats, lists, favorites, and even recommendations. It works for anime and manga lists, and the more titles you have listed, the more accurate results you can expect.

As of May 2015, this is a read only repository. Forks are appreciated, but what we truly would like to see would be merging some of MALgraph features into MAL itself.

For hosting instructions, see Wiki.

Features

Profile

  • basic profile data, including list views, time on MAL, all friends and clubs
  • summary of anime and manga stats
  • number of franchises, with the full list of titles grouped together
  • fix your ep/chapter count mismatches (yeah, MAL changes ep count from time to time)
  • see at a glance how your scores compare to global stats

List

  • all your anime or manga, by default sorted by score
  • use filters to quickly search for titles you're interested in
  • see how your scores compare with MAL's community

Ratings

  • see if you overuse 7 or 8s, check your average score and standard deviation
  • click on the graph to reveal all titles rated with given score or not rated at all
  • check if you waste most of your time watching crappy series
  • total time spent watching/reading and average time in minutes per day
  • export your rating distribution as a live image, build custom color theme
  • see your highest rated episode/chapter count ranges

History

  • a visual representation of your watching/reading history from last 21 days
  • check how many episodes from different series you've watched in last 3 weeks
  • timeline broken down to months, showing you number of series you've completed
  • both charts are interactive - clicking on data points shows detailed list of titles
  • easily see complete list of titles with unspecified completion date, so you can fix them

Favorites

  • favorite years and decades - were series from 2008 better than 2003? 80s worse than now?
  • type distribution to check if you watch more movies than TV series
  • list of genres you seem to like (action+comedy anyone?)
  • favorite anime studios and manga authors, with counters, mean score and total time

Recommendations

  • recommendations engine for anime and manga
  • take a quick glance what looks interesting, see how big its franchise is
  • list of titles related to those you've already completed: sequels, summaries, etc.

Achievements

  • genre~, score~, and total-number~based achievements, separate for anime and manga
  • multiple levels reflecting your stats, some unattainable for mere mortals

Other pages

  • about with short description, version history in images, and list of libraries used
  • privacy policy explaining that we're not evil, and that you can even block your Mg profile
  • global stats with basic info based on all MALgraph users

License

MALgraph is licensed under GPLv3 License.

Other things worth mentioning

This is the fourth version of Mg. The first one only showed the rating distribution, while its successor was a lot richer in content, but everything was presented in one overwhelming cluster of data. Mg3 had everything split into tabs, with more features and less distracting things, like humongous formulas shown in tooltips. Mg4 has a completely new caching engine and improves on its predecessor in speed, number of features, and layout clarity.

All user's data is downloaded once a day at most. After a successful download, the HTML version of all pages is cached. This ensures that MALgraph won't be a huge threat to MAL's servers - we only download the data once per 24 hours, which is a tiny fraction of an average user's browsing activity. Anime and manga data is cached too, with its lifespan depending on airing state - whether it's airing, has finished airing or isn't out yet.

malgraph4's People

Contributors

bunny1ov3r avatar ken-oh99 avatar kondo-isao avatar morr avatar oczki avatar parsleyparsnips avatar xalfrea avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

malgraph4's Issues

Make franchise calculator faster

It's pretty slow right now, rendering user page can take up to a few seconds (spacecowboy exceeded 30 seconds).

I have to do something about it.

Perhaps new table?

Design not yet aired icon

"Not yet aired" icon introduced in #36 is the same as "Dropped" icon in /list section. It is very confusing, especially after introduction of new "Hide suggestion" icon (see #41).

Note that we don't necessarily need combined "not yet aired" + "planned" icon -- "planned" could overwrite "not yet aired".

Config: local data

Right now every change done to config goes to repo.
There should be mechanism that allows to change config locally without producing any diff in the actual code.

Use dayumn ORM!

Drop PDO and use proper ORM solution; RedBeanPHP seems to be a good choice.

  • Database.php should be removed.
  • Processor classes should use RRP instead of PDO.
  • Retriever class should be removed.
  • Methods from Retriever should be implemented in some kind of Model classes.
  • DataUtilities should be renamed to ModelUtils.

List: difference between user's and MAL score for given title

Add a fourth column to /list, with label Diff, sortable.

For each row, it shows the difference between user's rating and entry's mean score on MAL (Diff = UserScore - MALscore). If user's rating is higher, it shows e.g. +1.41, if lower then -0.12, and 0 if they're equal. If user hasn't rated the given title, it shows -, just like in the rating column.

The items on this column could have a tooltip containing MAL's score, but that's not required.

Make cron processing faster

After implementing ORM framework for dealing with SQL, cron went somewhat slow (6s for one user). I suspect that it has to do with removal of AbstractSubProcessor::update() in favor of R::store(). Investigate the problem and remove bottlenecks.

Change cron behavior

Right now, cron downloads all a/m whenever user is download, regardless of last download.

It should look at time of last download.

Align menu header to content-box

  • Content box in the center of the screen
  • The width of main header should be the same as the content, not content+menu
  • What about mobile layouts?

Design improvement of navigation menu

Right now, navigation menu on user-specific pages looks ugly, it takes a lot of space and distracts user with big picture. It should probably be changed to look nicer.

Add recommendations engine

  • Retrieval of cool users
  • Evaluating similarity
  • Retrieval of all entries
  • Filter out blacklisted genres from entries
  • Checking what entries are cool
  • Adding static entries
  • Presentation

Review missing titles section

Right now:

  • left side displays everything user has on its list,
  • right side displays everything user hasn't on its list.

What about planned titles?
What about titles that are still publishing?

Please provide detailed logic flowchart what kind of entries should be shown in what sections of the table along with list of users I can test implementation on.

Refactor layout / user menu

Right now, user menu is displayed in layout.

Layout shouldn't be responsible for drawing anything controller-specific, especially it shouldn't contain such big code cluster like user menu code.

Database: nuke media only

Right now, we have make-db.php script that nukes whole database.
What I'd like to have is a mechanism that would allow to purge everything related to media: genres, relations, ..., leaving users and everything related to them alone.

Slight menu icon changes

  1. To keep consistency across all icons, the ones in menu should be a bit thicker, namely Ratings and History - these are too thin compared to other icons.
    clock
    In the corner is the resultant icon scaled down to around 20x20. The arrow head could be a bit more visible, though.
  2. Remove half-opaque parts of List icon (icons should be as clear as possible, and this one doesn't need antialiasing since it consists of straight lines).
  3. Replace Achievements icon with a less round one:
    cup

Design - missing user nickname

When I browse through suggestions or anything that isn't profile... I don't see my nickname, thus when I go back to MALgraph after few ctrl+tab I ask myself whose page am I viewing.

This is design fallacy and it should be fixed. Nickname has to be shown somewhere.

Design front page

Right now front page is just a placeholder.

Have a look at front pages of greatest-looking sites in the Internet and design a layout for MALgraph.

Inb4, Google is not greatest-looking.
Google pager
No further comment necessary.

Refactor user modules

Right now there are lots of switches and string mappings regarding user modules (profile, list, ratings, ...):

  • one in layout.phtml in order to create links for each module,
  • one in UserController in order to understand links,
  • second one in UserController to dispatch links to proper methods,
  • the methods in UserController,
  • finally -- UserModuleEnum.

Make new class: UserControllerModule. Each module should derive from that. This leads to nested structure but no switches should be necessary thanks to reflection. Method like UserController::getModules() probably will be necessary.

When refactoring, do have in mind that profile is going to be unrelated to media. Although it should be treated specially in general (for example, it doesn't appear in a/m menus), rather than implementing profile-specific hacks, an universal mechanism that would allow modules to be media-specific (think module that appears only in manga submenu) should be implemented .

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.