Skip to content

Releases: jodal/comics

v2.0.1 (2012-10-06)

20 Mar 10:08
Compare
Choose a tag to compare
  • Add dependency on pytz.
  • Make conversion from publication date to epoch used by 11 crawlers aware of the time zone.
  • Set sender of feedback emails to the email address of the logged in user.

Crawlers

  • New: antics
  • New: beetlebailey
  • New: choppingblock
  • New: dungeond
  • New: dustin
  • New: exiern
  • New: pickles
  • Update: boxerhockey after site change.
  • Update: exiern after site change.
  • Update: gregcomic schedule.
  • Update: havet with better time zone handling.
  • Update: kiwiblitz after site change.
  • Update: misfile after site change.
  • Update: mysticrevolution to be more robust.
  • Update: reveland with better time zone handling.
  • Update: spikedmath to only fetch the correct images.
  • Update: tehgladiators schedule.
  • Update: thegamercat to fetch full size images.
  • Update: virtualshackles schedule.
  • Update: walkoflife with better time zone handling.
  • Update: whattheduck schedule.
  • Update: whiteninja schedule.
  • Update: wulffmorgenthaler to fetch the previous day due to releases being delayed.
  • Update: yehudamoon after site change.
  • Update: zelda schedule.
  • Update: zits after site change.

v2.0.0 (2012-06-11)

20 Mar 10:07
Compare
Choose a tag to compare

Version 2 refreshes the entire comics web interface. The aggregation part of comics is mostly unchanged since v1.1.

  • Design: New design based on Twitter Bootstrap.

  • User accounts:

    • Add user account registration flow, which includes email address verification, login, logout, password change, and password reset.
    • Add account management interface.
    • Add user information to the footer of emails sent from the feedback page.
    • Require a user-specific secret key to allow access to feeds. (Fixes: #25)
    • Add support for requiring an invitation to register as a new user. Set the setting INVITE_MODE to True to require invitation before registration. (Fixes: #29)
  • "My comics":

    • Replace named comic sets with comic subscriptions associated with users, called "my comics". An importer for converting old comics sets to "my comics" is included. (Fixes: #26, #27)
    • Add buttons to all comic views for adding the comic to "my comics".
    • Extend comics list in the footer to include subscription management. (Fixes: #28, #49)
  • Comics browsing:

    • Orders the "latest" view by fetched time instead of the comic name. New content is always at the top. (Fixes: #13)
    • Removes browsing of weeks or N days, with the exception of +1 days, which is kept as a "today" view.
    • Reimplemented lots of crusty old code using Django's class-based generic views.
    • Reimplement feeds using regular views instead of Django's feed abstraction to reduce the feed response time enough to not cause timeouts when using e.g. Netvibes to subscribe to feeds. (Fixes: #5)
  • Comics crawling:

    • Try to verify that image files are valid by loading them with PIL before saving them. (Fixes: #17)
    • Use PIL instead of server-provided MIME types to identify the image type.
    • Removed unused check_image_mime_type crawler setting.
    • Whitelist GIF, JPEG, and PNG files. All other file types are rejected. (Fixes: #16)
    • Blacklisted the GoComics placeholder image.
  • Development:

    • The WSGI file is now also used when using Django's run server command while developing, making the development and deployment environments more alike.

v1.1 to v2.0 migration guide

  • New dependencies:

    • django-registration >= 0.8, < 0.9
    • django-bootstrap-form >= 2.0, < 2.1
  • Updated dependencies:

    • Django >= 1.4, < 1.5
    • django_compressor >= 1.1, < 1.2
  • Settings:

    • Removed setting COMICS_SITE_TAGLINE.
    • Replaced setting COMICS_MAX_DAYS_IN_PAGE with COMICS_MAX_RELEASES_PER_PAGE.
    • Removed COMICS_MEDIA_ROOT and COMICS_MEDIA_URL. As static files now are located under STATIC_ROOT and STATIC_URL, the entire namespace under MEDIA_ROOT and MEDIA_URL are now available for downloaded media, e.g. crawled comics.
  • Commands:

    • loadmeta is now called comics_addcomics. It no longer defaults to adding all comics to your installation, but you must now specify -c all to do so.
    • getcomics is now called comics_getreleases. Remember to update your cronjobs.
  • Project layout:

    • Moved manage.py one level higher in the directory structure, to follow the new defaults in Django 1.4. Again, remember to update your cronjobs.
    • Moved file with WSGI application from wsgi/deploy.wsgi to comics/wsgi/__init__.py to follow the new default structure in Django 1.4. Remember to update your web server configuration.
  • As the comic "sets" functionality has been replaced, the app comics.sets is no longer activated by default. If you're upgrading from comics v1.x and have existing sets in your database, you should activate the comics.sets app so that your users may import their old comic sets into their new user accounts. Add the following to your local settings file, comics/settings/local.py:

    from comics.settings.base import INSTALLED_APPS
    INSTALLED_APPS += ('comics.sets',)
    
  • Renamed :class:MetaBase to :class:ComicDataBase, and moved it to comics.core.comic_data. Remember to update any custom crawlers.

  • Database changes:

    • The field Comic.number_of_sets has been removed as it is no longer used. If you would want to rollback from 2.x to 1.x the data in this field can be regenerated, as it's only a denormalization of data available elsewhere.
    • The datetime field Comic.added has been added. It is automatically populated with a date in the far past upon database migration.
    • Added two new database indexes to the Release model, which both help a lot towards making comics browsing faster. They will be automatically created on database migration.

    All of these changes can be automatically applied to your database. To do so, run::

    python manage.py syncdb --migrate
    

v1.1.6 (2012-06-10)

20 Mar 10:00
Compare
Choose a tag to compare

Bugfixes

  • LxmlParser.text() now returns an empty list if :attr:allow_multiple is :class:True and :attr:default is not specified. This is identical to how all other :class:LxmlParser selector methods already work.

Crawlers

  • New: oatmeal
  • New: zelda
  • Update: abstrusegoose has a schedule.
  • Update: apokalips is no longer published.
  • Update: asofterworld after feed change.
  • Update: atheistcartoons is no longer published.
  • Update: axecop has a schedule.
  • Update: basicinstructions has a new schedule.
  • Update: bgobt is no longer published.
  • Update: boasas is no longer published.
  • Update: bunny is no longer published.
  • Update: carpediem is no longer published.
  • Update: countyoursheep is no longer published.
  • Update: crfh after site change.
  • Update: darklegacy does not follow a schedule.
  • Update: devilbear does not follow a schedule.
  • Update: dieselsweetiesweb to be more robust to missing elements in the feed.
  • Update: goblins does not follow a schedule.
  • Update: gunshow has a new release schedule.
  • Update: hijinksensue after feed change.
  • Update: icanbarelydraw has a new release schedule.
  • Update: kiwiblitz does not follow a schedule.
  • Update: littlegamers does not follow a schedule.
  • Update: m is no longer published.
  • Update: magpieluck is no longer published.
  • Update: pcweenies does not follow a schedule.
  • Update: picturesforsadchildren after feed change.
  • Update: radiogaga has a new release schedule.
  • Update: rhymeswithwitch is no longer published.
  • Update: spaceavalanche after feed change.
  • Update: stuffnoonetoldme is no longer published.
  • Update: subnormality got a sensible history capability.
  • Update: tehgladiators does not follow a schedule.
  • Update: theidlestate does not follow a schedule.
  • Update: utensokker is no longer published.
  • Update: uvod got an updated homepage address.
  • Update: virtualshackles does not follow a schedule.
  • Update: walkoflife does not follow a schedule.

v1.1.5 (2012-05-09)

20 Mar 09:59
Compare
Choose a tag to compare

The regular crawler updates and a small bug fix.

Bugfixes

  • Handle aggregated images with MIME type image/pjpeg as JPEG images instead of rejecting them.

Crawlers

  • New: chainsawsuit
  • New: goblins
  • New: subnormality
  • Update: applegeeks was discontinued a long time ago.
  • Update: applegeekslite was discontinued a long time ago.
  • Update: calamitesofnature has been discontinued.
  • Update: duelinganalogs was broken due to feed changes.
  • Update: fagprat has a new schedule.
  • Update: fanboys was broken due to feed changes.
  • Update: heltnils has a new schedule.
  • Update: hijinksensue was broken due to feed changes.
  • Update: playervsplayer was broken due to feed changes.
  • Update: pondus was broken due to a site change.
  • Update: savagechickens has a new schedule.
  • Update: theidlestate after site redesign and addition of a feed.
  • Update: veslemoy has a new schedule.

v1.1.4 (2012-04-07)

20 Mar 09:58
Compare
Choose a tag to compare

The regular crawler updates and a performance improvement.

Bugfixes

  • Store only the name of recently used sets in the session, instead of full set objects. After applying this fix, you should either delete all existing sessions:

    $ python manage.py shell
    >>> from django.contrib.sessions.models import Session
    >>> Session.objects.all().delete()
    

    Or migrate the content of your existing sessions:

    $ python manage.py cleanup
    $ python manage.py shell
    
    # Then run the following Python script in the Python shell:
    
    from django.contrib.sessions.backends.db import SessionStore
    from django.contrib.sessions.models import Session
    store = SessionStore()
    for session in Session.objects.all():
        data = session.get_decoded()
        set_names = []
        for set in data.get('recent_sets', []):
            if hasattr(set, 'name'):
                set_names.append(set.name)
            else:
                set_names.append(set)
        data['recent_sets'] = set_names
        session.session_data = store.encode(data)
        session.save()
        print '.',
    

Crawlers

  • New: kellermannen
  • New: manalanextdoor
  • New: thegamercat
  • New: walkoflife
  • Update darylcagle after feed change.
  • Update playervsplayer after feed change.

v1.1.3 (2012-01-29)

20 Mar 09:57
Compare
Choose a tag to compare

This release adds 9 new crawlers and updates 46 existing crawlers.

Crawlers

  • New: beyondthetree
  • New: dresdencodak
  • New: extraordinary
  • New: gunnerkrigg
  • New: icanbarelydraw. Contributed by Jim Frode Hoff.
  • New: manlyguys. Contributed by Jim Frode Hoff.
  • New: menagea3
  • New: sequentialarts
  • New: somethingofthatilk. Contributed by Jim Frode Hoff.
  • Update amazingsuperpowers with new release schedule.
  • Update billy which is no longer published.
  • Update bizarro with new release schedule.
  • Update bizarrono which is no longer published.
  • Update boasas after site change.
  • Update bgobt with new release schedule.
  • Update buttersafe with new release schedule.
  • Update calvinandhobbes after site change.
  • Update carpediem after site change.
  • Update darylcagle after site change.
  • Update devilbear with new release schedule.
  • Update eatthattoast after site change.
  • Update eon after site change.
  • Update extralife to be more robust.
  • Update fanboys after site change.
  • Update gregcomic with new release schedule.
  • Update gucomics after site change.
  • Update heltnils after site change.
  • Update hipsterhitler after site change.
  • Update kalscartoon after site change.
  • Update lefthandedtoons with new release schedule.
  • Update loku which is no longer published.
  • Update m with new release schedule.
  • Update mortenm which is no longer published.
  • Update mysticrevolution after site change.
  • Update nemibt with new release schedule.
  • Update nerfnow with new release schedule.
  • Update optipess with new release schedule.
  • Update orneryboy with new release schedule.
  • Update pidjin after site change.
  • Update pondusno which is no longer published.
  • Update questionablecontent to be more robust.
  • Update radiogaga after site change.
  • Update reallife with new release schedule.
  • Update reveland with new release schedule.
  • Update romanticallyapocalyptic to be more robust.
  • Update savagechickens with new release schedule.
  • Update sheldon with new release schedule.
  • Update somethingpositive after site change.
  • Update stickycomics after site change.
  • Update tehgladiators after site change.
  • Update thedreamer with new release schedule.
  • Update threewordphrase to be more robust.
  • Update utensokker with new release schedule.
  • Update wulffmorgenthalerap after site change.
  • Update yehudamoon with new release schedule.

v1.1.2 (2011-09-18)

20 Mar 09:57
Compare
Choose a tag to compare

A couple of bugfixes easing the transition from 1.0.x to 1.1.x by jwyllie83, and some new crawlers.

Bugfixes

  • Updated South requirement to v0.7, which is needed to support the last migration introduced by comics v1.1.0.

  • If you use WSGI, you can now add a file wsgi/local.py based off of wsgi/local.py.template to set local settings for WSGI, like the use of virtualenv and debugging settings. This removes the need for changing Git tracked files, like deploy.wsgi for adding e.g. virtualenv support.

Crawlers

  • New: buttersafe
  • New: doghouse
  • New: eatthattoast
  • New: hejibits
  • New: optipess
  • New: savagechickens
  • New: threewordphrase
  • New: timetrabble
  • Update pennyarcade after site change.

v1.1.1 (2011-08-22)

20 Mar 09:56
Compare
Choose a tag to compare

Some fixes a week after the v1.1 feature release.

Bugfixes

  • Fix missing whitespaces on about page after HTML minification.
  • Add missing CSRF token to feedback form.

Crawlers

  • Update asofterworld to work after feed change.

v1.1.0 (2011-08-15)

20 Mar 09:55
Compare
Choose a tag to compare
  • New/upgraded requirements:

    • Django 1.3
    • django_compressor
    • cssmin
    • jsmin
  • Page speed improvements:

    • CSS and JavaScript is now merged and minified.
    • HTML is minified.
    • Optional Google Analytics code is upgraded to the asynchronous version.
    • All icons have been replaced with sprites to reduce number of elements that
      must be downloaded.
  • Slightly refreshed graphical design.

  • The "all comics" list at the bottom of the page have been changed from a cloud to lists in four columns.

  • The optional comic meta data search functionality have been removed.

  • Better handling of inactive comics:

    • Add active flag to comics.
    • Marked no longer published comics as inactive.
    • Inactive comics are no longer loaded by the loadmeta command unless explicitly specified by name or they have been previously loaded. In other words, inactive comics will not automatically be included in new installations.
    • Inactive comics are no longer included in the top 10 on the front page.
    • Inactive comics are now marked in the comics list on the bottom of all pages.
    • Inactive comics are now marked in the comics list page.
    • Inactive comics are now excluded from the set edit form, effectively
      removing them from the set on save.

v1.0.x to v1.1.x migration guide

Ordered steps for synchronizing your v1.0.x installation with v1.1.0. You should perform them in order.

Using virtualenv

If you choose to use virtualenv keeping all of comics' dependencies sandboxed, be sure to activate the environment both in your cronjob and when manually executing manage.py:

source <path_to_virtualenv>/bin/activate
python manage.py getcomics

If you use WSGI, the WSGI file must be modified to support virtualenv. See
the source code for how the bundled WSGI file solves this.

New dependencies

There are several new dependencies. All of them are listed in the file
requirements.txt and may be installed using pip, optionally inside a
virtualenv:

pip install -r requirements.txt

To avoid compiling dependencies that are not pure Python and thus requires the installation of various C libraries and Python's development packages, it may be wise to use your distribution's package manger for some packages, like lxml and PIL. E.g. on Ubuntu I would install the dependencies like this:

sudo apt-get install python-lxml python-imaging
pip install -r requirements.txt

This way, lxml and PIL are installed from APT, and pip installs the remaining pure Python dependencies.

Settings changes

Database settings now use the new Django 1.2 format. See comics/settings/base.py for the new default setting and use it as an example for porting your comics/settings/local.py settings file.

Database migration

A new database field has been added. To migrate your database to work with 1.1.0, run:

python manage.py migrate

Warning

You need South v0.7 or later to perform the database migration.

comics v1.1.0's requirements.txt file only require South v0.6 or later. This is a bug, and the migration will not work if you're using South v0.6.x.

Static files collection

We now use Django's new static files system. After installing you need to "collect" your static files. See :ref:collecting-static-files for how to do this.

v1.0.8 (2011-08-10)

20 Mar 09:52
Compare
Choose a tag to compare

Just new and updated crawlers.

Crawlers

  • New: mysticrevolution
  • New: theidlestate
  • Update havet to work after feed removal.
  • Update reveland to work after feed removal.
  • Update thechalkboardmanifesto to work after feed change.
  • Update utensokker to work after feed removal.
  • Update whattheduck schedule.