Code Monkey home page Code Monkey logo

pythonbits's Introduction

pythonBits

GitHub release GitHub release PyPI version PyPI pyversions GitHub commits since release GitHub license Build Status

A Python description generator for movies and TV shows

Install

  1. (Optional, highly recommended) Set up a virtualenv to avoid polluting your system with dependencies.
  • with virtualenvwrapper: mkvirtualenv pythonbits
    • activate the virtualenv with workon pythonbits
  1. Install pythonBits in one of the following ways
  • install via pip install pythonbits
  • clone and pip install .
  • pipx
  • (dev) clone, install requirements from setup.py and run as python -m pythonbits instead of pythonbits
  1. Install mediainfo, ffmpeg and mktorrent>=1.1 such that they are accessible for pythonBits
  • you can also manually specify things such as the torrent file or screenshots, this will prevent the programs from being called, removing the dependency

If you don't want to use a virtualenv but keep system pollution with PyPI packages to a minimum, install via pip install --user. For more information, visit this site.

Usage

usage: pythonbits [-h] [--version] [-v] [-c {tv,movie}] [-u FIELD VALUE] [-i]
                  [-t] [-s] [-d] [-b] [-f FIELD [FIELD ...]]
                  [--num-cast NUM_CAST] [--num-screenshots NUM_SCREENSHOTS]
                  PATH [TITLE]

Use pythonbits --help to get a more extensive usage overview

Examples

pythonBits will attempt to guess as much information as possible from the filename. Unlike in previous releases, explicitly specifying a category or title is usually not necessary. PATH can also reference a directory, e.g. for season packs.

In most cases it is enough to just run pythonbits <path> to generate a media description. If running the desired features requires uploading data to remote servers, you will be prompted to confirm this finalization before it occurs.

  • Print mediainfo: pythonbits -i <path>, equivalent to pythonbits -f mediainfo <path>
  • Make screenshots: pythonbits -s <path>
  • Write a description: pythonbits -d <path>
  • Make a torrent file: pythonbits -t <path>
  • Generate complete submission and post it: pythonbits -b <path> (Note: YOU are responsible for your uploads)
  • Generate complete submission, use supplied torrent file and tags: pythonbits -b -u torrentfile <torrentfile> -u tags "whatever,tags.you.like" <path>

In case the media title and type cannot be guessed from the path alone, you can explicitly specify them, e.g. pythonbits <path> "Doctor Who (2005) S06"or pythonbits <path> -c movie.

You can increase the verbosity of log messages printed to the screen by appending -v. This would print INFO messages. To print DEBUG messages, append twice, i.e. -vv.

You can also import pythonbits to use in your own Python projects. For reference on how to best use it, take a look at __main__.py. Once you have created an appropriate Submission instance s, you can access any desired feature, for example s['title'], s['tags'] or s['cover'].

pythonbits's People

Contributors

acyclicly avatar extravagant avatar ichabond avatar kylev avatar mueslo avatar plotski avatar znedw 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pythonbits's Issues

Make console output more usable

Results in:

================================ screenshots ================================= [u'https://i.imgur.com/fakelink.png', u'https://i.imgur.com/fakelink.png', u'https://i.imgur.com/fakelink.png', u'https://i.imgur.com/fakelink.png', u'https://i.imgur.com/fakelink.png']

Discrepancy between IMDB Stars and Full Cast tags, when alphabetically billed

Saw generated description on the movie Choke 2008, https://www.imdb.com/title/tt1024715/

On IMDB, its stars are listed as:
Stars: Sam Rockwell, Anjelica Huston, Kelly Macdonald

But because the cast tags are taken from the cast section, for Choke, it became:
Cast: Kathryn Alexander | Teodorina Bello | Kate Blumberg | Jonah Bobo | Willi Burke

For most films, no problem. Only a weird issue on films like Choke, where the "stars" is more useful information, and not the cast, as alphabetically/first billed. (Both cast, and starring are better aligned on wikipedia, https://en.wikipedia.org/wiki/Choke_(film).)

Architecture and syntax overhaul for further modularisation

So pythonBits can be expanded to other trackers, too.

Targeted python syntax:

s = bb.TVSubmission(params)
s.fields (list all available fields)
-> container, video_codec, path, 

s.fields['container'] / s['container']
-> 'MKV'

s.form_fields
-> title, description, ...

s.form_fields['title']
-> this is the generated title

s.submit() -> s.site.post(s['payload'])
-> URL of posting or exception

Targeted command line syntax:

pythonbits bb <file>  # list default fields for media type
pythonbits bb list (<file> or -c <category>)  # list available fields and corresponding form_fields
pythonbits bb get screenshots title <file>
pythonbits bb submit <file> -f <somefield> <somevalue>
pythonbits bb submit <file> --non-interactive  # for use in scripts

Structure

  • __init__.py
  • __main__.py
  • submission.py
  • categories.py
  • sites/
    • __init__.py
    • common.py
    • bb/
      • __init__.py
    • btn/
      • __init__.py

module bb:
class MovieSubmission(VideoSubmission, categories.MovieSubmissionMixin)
class VideoSubmission(BbSubmission)

IMDB has no running time

Traceback (most recent call last):
  File "/usr/local/bin/pythonbits", line 9, in <module>
    load_entry_point('pythonbits==3.0b5', 'console_scripts', 'pythonbits')()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/__main__.py", line 110, in main
    sub.show_fields(get_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 248, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 119, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 211, in _render_submit
    return self.show_fields(self.registry['mappers'].keys())
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 248, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 119, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 146, in _render_tags
    tags = list(self['summary']['genres'])
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 119, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 520, in _render_summary
    return movie.summary()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/imdb.py", line 15, in summary
    'runtime': str(self.movie.base.runningTimeInMinutes) + " min",
  File "/usr/local/lib/python2.7/site-packages/attrdict/mixins.py", line 82, in __getattr__
    cls=self.__class__.__name__, name=key
AttributeError: 'AttrDict' instance has no attribute 'runningTimeInMinutes'

Test with Glue Boys (2007)

UnicodeDecodeError

File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 137, in _render_payload_preview
    preview += unicode(value) + "\n"
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 626: ordinal not in range(128)

Upgraded to rc-1

Traceback (most recent call last):
  File "/usr/local/bin/pythonbits", line 9, in <module>
    load_entry_point('pythonbits==3.0rc1', 'console_scripts', 'pythonbits')()
TypeError: main() takes exactly 3 arguments (0 given)

No cast in movie

  File "/usr/local/bin/pythonbits", line 9, in <module>
    load_entry_point('pythonbits==3.0b5', 'console_scripts', 'pythonbits')()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/__main__.py", line 110, in main
    sub.show_fields(get_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 248, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 119, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 211, in _render_submit
    return self.show_fields(self.registry['mappers'].keys())
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 248, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 119, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 146, in _render_tags
    tags = list(self['summary']['genres'])
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 119, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 520, in _render_summary
    return movie.summary()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/imdb.py", line 21, in summary
    'cast': self.movie.credits.cast,
  File "/usr/local/lib/python2.7/site-packages/attrdict/mixins.py", line 82, in __getattr__
    cls=self.__class__.__name__, name=key
AttributeError: 'AttrDict' instance has no attribute 'cast'

Use Typeface (2009) to reproduce

KeyError: 'year'

Traceback (most recent call last):
  File "/usr/local/bin/pythonbits", line 9, in <module>
    load_entry_point('pythonbits==3.0b5', 'console_scripts', 'pythonbits')()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/__main__.py", line 110, in main
    sub.show_fields(get_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 248, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 119, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 211, in _render_submit
    return self.show_fields(self.registry['mappers'].keys())
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 248, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 119, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 515, in _render_year
    return self['guess']['year']
KeyError: 'year'

Instead of throwing a KeyError, can it just prompt me if guessit can't find it?

Need DVDRip option

Choices: {0: 'BluRay', 1: 'BluRay 3D', 2: 'WEB-DL', 3: 'WebRip', 4: 'HDTV', 5: 'DVDSCR', 6: 'CAM'}

UnicodeDecodeError in filename

Traceback (most recent call last):
  File "/home/eeeeve/.local/lib/python2.7/site-packages/pythonbits/__main__.py", line 142, in main
    _main(Category, set_fields, get_fields)
  File "/home/eeeeve/.local/lib/python2.7/site-packages/pythonbits/__main__.py", line 118, in _main
    sub.show_fields(get_fields)
  File "/home/eeeeve/.local/lib/python2.7/site-packages/pythonbits/bb.py", line 51, in show_fields
    fields or self.default_fields)
  File "/home/eeeeve/.local/lib/python2.7/site-packages/pythonbits/submission.py", line 242, in show_fields
    val = self[field]
  File "/home/eeeeve/.local/lib/python2.7/site-packages/pythonbits/submission.py", line 121, in __getitem__
    rv = field_renderer()
  File "/home/eeeeve/.local/lib/python2.7/site-packages/pythonbits/submission.py", line 205, in _render_submit
    return self.show_fields(list(self.registry['mappers'].keys()))
  File "/home/eeeeve/.local/lib/python2.7/site-packages/pythonbits/bb.py", line 51, in show_fields
    fields or self.default_fields)
  File "/home/eeeeve/.local/lib/python2.7/site-packages/pythonbits/submission.py", line 242, in show_fields
    val = self[field]
  File "/home/eeeeve/.local/lib/python2.7/site-packages/pythonbits/submission.py", line 121, in __getitem__
    rv = field_renderer()
  File "/home/eeeeve/.local/lib/python2.7/site-packages/pythonbits/bb.py", line 518, in _render_form_description
    ss = "".join(map(bb.img, self['screenshots']))
  File "/home/eeeeve/.local/lib/python2.7/site-packages/pythonbits/submission.py", line 121, in __getitem__
    rv = field_renderer()
  File "/home/eeeeve/.local/lib/python2.7/site-packages/pythonbits/bb.py", line 217, in _render_screenshots
    ffmpeg = FFMpeg(self['mediainfo_path'])
  File "/home/eeeeve/.local/lib/python2.7/site-packages/pythonbits/submission.py", line 121, in __getitem__
    rv = field_renderer()
  File "/home/eeeeve/.local/lib/python2.7/site-packages/pythonbits/bb.py", line 205, in _render_mediainfo_path
    print("{}: {}".format(k, os.path.relpath(v, self['path'])))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 31: ordinal not in range(128)

The.Last.Man.On.Earth.S04E12.Señor.Clean

Handle date-based filenames

e.g. conan.2018.07.12.andy.samberg.web.x264-tbs

or Jeopardy.2018.07.11.720p.HDTV.x264-NTb

Perhaps could search by "original air date" from TVDB?

mktorrent issue (already install 1.1)

mktorrent 1.1 (c) 2007, 2009 Emil Renner Berthing

mktorrent: invalid option -- '-'
Use -h for help.
[2018-06-03 03:50:16.441121] ERROR: pythonBits: An exception occured.
Full log stored at file:///home/eeeeve/.cache/pythonbits/log/pythonbits.log
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/pythonbits/__main__.py", line 142, in main
    _main(Category, set_fields, get_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/__main__.py", line 118, in _main
    sub.show_fields(get_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 44, in show_fields
    fields or self.default_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 242, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 121, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 205, in _render_submit
    return self.show_fields(list(self.registry['mappers'].keys()))
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 44, in show_fields
    fields or self.default_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 242, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 121, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 97, in _render_torrentfile
    return make_torrent(self['path'])
  File "/usr/local/lib/python2.7/site-packages/pythonbits/mktorrent.py", line 70, in make_torrent
    raise MkTorrentException()
MkTorrentException

Attempt to upload movie cover first?

Given the high amount of errors with uploading movie posters, and given that the script errors out and you have you start all over again, is it possible to re-arrange the sequence so that the movie poster attempts to get uploaded first, so that you don't have 4 different clones of screenshots that get re-uploaded to imgur?

Can't handle redirection IMDB IDs

[2018-06-01 08:01:40.507497] ERROR: pythonBits: An exception occured.
Full log stored at file:///home/eeeeve/.cache/pythonbits/log/pythonbits.log
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/pythonbits/__main__.py", line 138, in main
    _main(Category, set_fields, get_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/__main__.py", line 114, in _main
    sub.show_fields(get_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 42, in show_fields
    fields or self.default_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 242, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 121, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 205, in _render_submit
    return self.show_fields(list(self.registry['mappers'].keys()))
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 42, in show_fields
    fields or self.default_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 242, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 121, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 498, in _render_form_description
    bb.section("Screenshots", bb.center(ss)) +
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 121, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 488, in _render_description
    ("Information", self['section_information'])]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 121, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 441, in _render_section_information
    rating, votes = i.get_rating(s['imdb_id'])
  File "/usr/local/lib/python2.7/site-packages/pythonbits/imdb.py", line 55, in get_rating
    res = self.imdb.get_title_ratings(imdb_id)
  File "/usr/local/lib/python2.7/site-packages/imdbpie/imdbpie.py", line 130, in get
    self._redirection_title_check(imdb_id)
  File "/usr/local/lib/python2.7/site-packages/imdbpie/imdbpie.py", line 328, in _redirection_title_check
    msg='{0} is a redirection imdb id'.format(imdb_id)
  File "/usr/local/lib/python2.7/site-packages/imdbpie/imdbpie.py", line 351, in _title_not_found
    raise LookupError('Title not found.{0}'.format(msg))
LookupError: Title not found. tt7246802 is a redirection imdb id

reproduce with Legion.S02E09

Make blocking I/O async

online queries, torrent generation, etc

this likely requires a bit of a rearchitecturing with explicit dependencies. think about whether this is worth it.

Exception: ('Unkown or unsupported audio codec', 'AAC LC-SBR')

Unique ID                                : 317075557200272296135603557614330026224 (0xEE8A87F13931CD79E362BF76125B98F0)
Complete name                            : this.doesnt.matter.mkv
Format                                   : Matroska
Format version                           : Version 4 / Version 2
File size                                : 518 MiB
Duration                                 : 21mn 11s
Overall bit rate                         : 3 419 Kbps
Encoded date                             : UTC 2018-02-08 01:40:29
Writing application                      : mkvmerge v20.0.0 ('I Am The Sun') 64-bit
Writing library                          : libebml v1.3.5 + libmatroska v1.4.8
DURATION                                 : 00:21:11.090000000
NUMBER_OF_FRAMES                         : 29792
NUMBER_OF_BYTES                          : 20147164
_STATISTICS_WRITING_APP                  : mkvmerge v20.0.0 ('I Am The Sun') 64-bit
_STATISTICS_WRITING_DATE_UTC             : 2018-02-08 01:40:29
_STATISTICS_TAGS                         : BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : [email protected]
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 2 frames
Codec ID                                 : V_MPEG4/ISO/AVC
Duration                                 : 21mn 11s
Nominal bit rate                         : 3 360 Kbps
Width                                    : 1 280 pixels
Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 23.976 fps
Original frame rate                      : 24.000 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.152
Writing library                          : x264 core 148 r2579M 73ae2d1
Encoding settings                        : cabac=1 / ref=2 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=2 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=4 / lookahead_threads=1 / sliced_threads=0 / nr=250 / decimate=1 / interlaced=0 / bluray_compat=0 / stitchable=1 / constrained_intra=0 / bframes=0 / weightp=1 / keyint=250 / keyint_min=24 / scenecut=40 / intra_refresh=0 / rc_lookahead=10 / rc=2pass / mbtree=1 / bitrate=3360 / ratetol=1.0 / qcomp=0.60 / qpmin=5 / qpmax=69 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / aq=1:1.00
Default                                  : Yes
Forced                                   : No

Audio
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : HE-AAC / LC
Codec ID                                 : A_AAC
Duration                                 : 21mn 11s
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 48.0 KHz / 24.0 KHz
Compression mode                         : Lossy
Default                                  : Yes
Forced                                   : No

Fails if no IMDb Rating

Found another bug, if there is no IMDb rating, it crashes. Probably more ideal to just not include the rating.

ValueError: _type_ 'v' not supported

Traceback (most recent call last):
  File "/usr/local/bin/pythonbits", line 9, in <module>
    load_entry_point('pythonbits==3.0b5', 'console_scripts', 'pythonbits')()
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 552, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2672, in load_entry_point
    return ep.load()
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2345, in load
    return self.resolve()
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2351, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/__main__.py", line 8, in <module>
    from . import bb
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 23, in <module>
    from .submission import Submission, form_field, finalize
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 8, in <module>
    import readline
  File "/usr/local/lib/python2.7/site-packages/readline.py", line 6, in <module>
    from pyreadline.rlmain import Readline
  File "/usr/local/lib/python2.7/site-packages/pyreadline/__init__.py", line 12, in <module>
    from . import logger, clipboard, lineeditor, modes, console
  File "/usr/local/lib/python2.7/site-packages/pyreadline/clipboard/__init__.py", line 13, in <module>
    from .win32_clipboard import GetClipboardText, SetClipboardText
  File "/usr/local/lib/python2.7/site-packages/pyreadline/clipboard/win32_clipboard.py", line 37, in <module>
    import ctypes.wintypes as wintypes
  File "/usr/local/lib/python2.7/ctypes/wintypes.py", line 23, in <module>
    class VARIANT_BOOL(_SimpleCData):
ValueError: _type_ 'v' not supported

Handle unicode inputs properly

Amend a field? [N/<field name>] form_title
New (empty to cancel): Byôsoku 5 senchimêtoru AKA 5 Centimeters Per Second
[2018-03-12 08:13:41.685050] ERROR: pythonBits: An exception occured.
Full log stored at file:///home/eeeeve/.cache/pythonbits/log/pythonbits.log
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/pythonbits/__main__.py", line 136, in main
    _main(Category, set_fields, get_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/__main__.py", line 123, in _main
    if sub.confirm_finalization(get_fields):
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 286, in confirm_finalization
    print self.show_fields(fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 238, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 115, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 201, in _render_submit
    return self.show_fields(self.registry['mappers'].keys())
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 243, in show_fields
    s += format_val(val) + "\n"
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 233, in format_val
    return unicode(s)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128)

IMDB has no plot outline

Traceback (most recent call last):
  File "/usr/local/bin/pythonbits", line 9, in <module>
    load_entry_point('pythonbits==3.0b5', 'console_scripts', 'pythonbits')()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/__main__.py", line 110, in main
    sub.show_fields(get_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 248, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 119, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 211, in _render_submit
    return self.show_fields(self.registry['mappers'].keys())
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 248, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 119, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 146, in _render_tags
    tags = list(self['summary']['genres'])
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 119, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 520, in _render_summary
    return movie.summary()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/imdb.py", line 24, in summary
    'description': self.movie.plot.outline.text,
  File "/usr/local/lib/python2.7/site-packages/attrdict/mixins.py", line 82, in __getattr__
    cls=self.__class__.__name__, name=key
AttributeError: 'AttrDict' instance has no attribute 'outline'

Test with Quantum Hoops (2007)

Skip rating if no ratings on IMDB

[2018-06-01 07:59:10.097767] ERROR: pythonBits: An exception occured.
Full log stored at file:///home/eeeeve/.cache/pythonbits/log/pythonbits.log
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/pythonbits/__main__.py", line 138, in main
    _main(Category, set_fields, get_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/__main__.py", line 114, in _main
    sub.show_fields(get_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 42, in show_fields
    fields or self.default_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 242, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 121, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 205, in _render_submit
    return self.show_fields(list(self.registry['mappers'].keys()))
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 42, in show_fields
    fields or self.default_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 242, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 121, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 165, in _render_tags
    tags = list(self['summary']['genres'])
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 121, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 552, in _render_summary
    return movie.summary()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/imdb.py", line 36, in summary
    'rating': (self.movie.ratings.rating, 10),
  File "/usr/local/lib/python2.7/site-packages/attrdict/mixins.py", line 82, in __getattr__
    cls=self.__class__.__name__, name=key
AttributeError: 'AttrDict' instance has no attribute 'rating'

Replicate with tt5639898

Overflow error when scene checking

[2018-06-01 19:22:20.482170] ERROR: pythonBits: An exception occured.
Full log stored at file:///home/eeeeve/.cache/pythonbits/log/pythonbits.log
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/pythonbits/__main__.py", line 142, in main
    _main(Category, set_fields, get_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/__main__.py", line 118, in _main
    sub.show_fields(get_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 44, in show_fields
    fields or self.default_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 242, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 121, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 205, in _render_submit
    return self.show_fields(list(self.registry['mappers'].keys()))
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 44, in show_fields
    fields or self.default_fields)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 242, in show_fields
    val = self[field]
  File "/usr/local/lib/python2.7/site-packages/pythonbits/submission.py", line 121, in __getitem__
    rv = field_renderer()
  File "/usr/local/lib/python2.7/site-packages/pythonbits/bb.py", line 77, in _render_scene
    return is_scene_crc(path)
  File "/usr/local/lib/python2.7/site-packages/pythonbits/scene.py", line 30, in is_scene_crc
    buf = crc32(buf) & 0xFFFFFFFF
OverflowError: size does not fit in an int

Virtual env issue

Just to note, after setting this up in a virtual env, it didn't have ~/.config/pythonbits/pythonbits.cfg and threw an error when trying to find it, after creating the ~/config/pythonbits/ folder it was fine though.

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.