Giter VIP home page Giter VIP logo

flexget's Introduction

FlexGet

image

image

image

image

FlexGet is a multipurpose automation tool for content like torrents, nzbs, podcasts, comics, series, movies, etc. It can use different kinds of sources like RSS-feeds, html pages, csv files, search engines and there are even plugins for sites that do not provide any kind of useful feeds.

Example

Flexget uses a YAML based configuration file. The following example will look in the RSS feed in the link, will match any item that match the series names and download it:

tasks:
  tv:
    rss: http://example.com/torrents.xml
    series:
    - some series
    - another series
    download: /tvshows

There are numerous plugins that allow utilizing FlexGet in interesting ways and more are being added continuously.

FlexGet is extremely useful in conjunction with applications which have watch directory support or provide interface for external utilities like FlexGet. To get a sense of the many things that can be done with FlexGet you can take a look in our cookbook.

ChangeLog: https://flexget.com/ChangeLog

Help: https://github.com/Flexget/Flexget/discussions

Chat: https://flexget.com/Chat

Bugs: https://github.com/Flexget/Flexget/issues

Install

FlexGet is installable via pip with the command:

pip install flexget

For more detailed instructions see the installation guide.

How to use GIT checkout

Refer to development guide.

If you don't want to use virtualenv there's flexget_vanilla.py file which can be used to run FlexGet without virtualenv, note that you will need to install all required dependencies yourself.

flexget's People

Contributors

brutuz avatar crawln45 avatar cvium avatar deksan avatar dependabot[bot] avatar drwyrm avatar flexget-bot avatar gazpachoking avatar gray avatar ianstalk avatar jeroenl avatar kristenmills avatar lepinkainen avatar liiight avatar lildadou avatar metamma avatar nomaillard avatar paranoidi avatar patsissons avatar planeturban avatar pr0ps avatar pre-commit-ci[bot] avatar pyroscope avatar renovate[bot] avatar soloam avatar stevezau avatar theaquamarine avatar toilal avatar tommatheussen avatar tubedogg 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  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

flexget's Issues

import_series with 2 inputs

This isn't an issue per se but I don't know where is a better place to get an answer. I've been using flexget for some time and am always amazed by it's flexibility. So, awesome job and thanks for your contribution!

My question concerns the best way to use import_series but with 2 different lists with different settings for each list. Basically, I want to have some series that default to dl'ing the SD version and fallback to the HD version, and for some series vice versa. I want to then control which series is which through the 2 different trakt lists. So far the only way I've found that works is as follows:

presets:
  hd-tv:
    import_series:
      settings:
        exact: yes
        propers: 3 days
        timeframe: 8 hours
        target: 720p
        set:
          movedone: ~/complete/video/TV Shows/{{series_name}}
          ratio: 1.0
          label: tv_shows

      from:
        trakt_list:
          username: <redacted>
          password: <redacted>
          api_key: <redacted>
          custom: hd-shows


  sd-tv:
    import_series:
      settings:
        exact: yes
        propers: 3 days
        timeframe: 8 hours
        target: <720p hdtv+
        set:
          movedone: ~/complete/video/TV Shows/{{series_name}}
          ratio: 1.0
          label: tv_shows

      from:
        trakt_list:
          username: <redacted>
          password: <redacted>
          api_key: <redacted>
          custom: sd-shows

tasks:
  <redacted>-hd-tv:
    priority: 30
    rss: <redacted>

    set:
      ratio: 4.0

    download: ~/test

    preset: [ hd-tv ]

  <redacted>-sd-tv:
    priority: 30
    rss: <redacted>

    set:
      ratio: 4.0

    download: ~/test

    preset: [ sd-tv ]

Is there a better (i.e. more efficient) way to implement this? The problem w/ this approach is it requires 2 tasks for each RSS task. I've tried various other combinations (including putting both pre-sets in the same task) and I can't get any other approach to work.

Set entry['torrent_info_hash'] from magnet URI

I think the info_hash is the best identifier of an entry (much more reliable than title or URL). For example, the seen_info_hash plugin runs during the modify phase after the torrent plugin has set the torrent_info_hash of accepted entries to avoid duplicates. I request a (builtin) magnet plugin that sets entry['torrent_info_hash'] from entry['url'] if it's a magnet URI.

Since some sites since long have stopped providing torrent files but a simple magnet link only, I think this is a useful feature.

Add support for qualities parsing codec h265/x265

With x265 slowly starting being used, it's time to also add support for parsing it in Flexget.

Is this just matter of adding a line in qualities.py? Tests would probably be needed to update as well?

task priority ignored?

I noticed something strange in my real config - after 1.2 - so I've tried this:

templates:
  global:
    disable_phases: [input, filter, output]
tasks:
  aaa:
    priority: 1
  bbb:
    priority: 2
  ccc:
    priority: 3
  ddd:
    priority: 4

and this is the result:

pydev debugger: starting
2014-01-14 12:13 VERBOSE  details       aaa             Summary - Accepted: 0 (Rejected: 0 Undecided: 0 Failed: 0)
2014-01-14 12:13 VERBOSE  details       ccc             Summary - Accepted: 0 (Rejected: 0 Undecided: 0 Failed: 0)
2014-01-14 12:14 VERBOSE  details       bbb             Summary - Accepted: 0 (Rejected: 0 Undecided: 0 Failed: 0)
2014-01-14 12:14 VERBOSE  details       ddd             Summary - Accepted: 0 (Rejected: 0 Undecided: 0 Failed: 0)

Looks like the problem is the priority assigned to job in scheduler.py/150:

job = Job(task, options=options, output=output, priority=priority, trigger_id=trigger_id)

In my sample config that value is always 1, because it comes from Scheduler.execute() parameters. Perhaps it should be assigned to the task priority instead, but I guess there's a reason in the big picture why it's not.

Subtitle download automation?

I think it makes sense as Flexget automates video download to also automate subtitle download.

I just finished a major new version of subliminal

I'll let you be the judge if that feature has it's place within Flexget or not.

urlrewrite_serienjunkies.py series url always seen

The urlrewrite_serienjunkies.py plugin doesn't work anymore. After first run series always marked as seen.

"Rejected by seen plugin because entry with original_url ... is already marked seen in the task"

Can't decode byte 0xe2

When trying to run flexget I get an error:

'ascii' codec can't decode byte 0xe2 in position 1857: ordinal not in range(128)

I've tried searching around, but seems like the error is pretty generic. Let me know if you need anything from me.

Thanks,
Mark

notify_osd doesn't care whether it's enabled or not

notify_osd.py

schema = {
    'oneOf': [
        {'type': 'boolean'},
        ...

def prepare_config(self, config):
    if isinstance(config, bool):
        config = {}
    config.setdefault('title_template', '{{task.name}}')
    config.setdefault('item_template', '{{title}}')
    config.setdefault('timeout', 4)
    return config

Both notify_osd: yes and notify_osd: no will result in a notification

Unhandled exception in movie_queue

After upgrading from 1.1.74 to 1.1.104 I now get an error in the movie_queue plugin from a previously working task. The task is:

  get_movies:
      priority: 10
      rss: <redacted>
      content_size:
        max: 10000
      movie_queue: yes
      exists_movie: /content/video/Movies
      set:
        ratio: 6.0
        removeatratio: no
        movedone: /home/<redacted>/complete/staging/movies
        label: movies

      preset: [ send_email, use_seedbox_deluge ]

I'll add the log details as an attachment since it's a large stack trace.

Stack Trace: http://pastebin.com/TmxnWrCs

make_rss produces invalid feeds

The 'guid' field is invalid and the W3C Feed Validator suggests adding isPermaLink="false" to it.
This is also somwhat similar to Trac 547 except for the Missing atom:link with rel="self" part

--- a/flexget/plugins/output/rss.py
+++ b/flexget/plugins/output/rss.py
@@ -240,7 +240,7 @@ class OutputRSS(object):
                        'description': db_item.description,
                        'link': db_item.link,
                        'pubDate': db_item.published,
-                       'guid': guid}
+                       'guid': PyRSS2Gen.Guid(guid, False)}
                 log.trace('Adding %s into rss %s' % (gen['title'], config['file']))
                 rss_items.append(PyRSS2Gen.RSSItem(**gen))
             else:

Can't log in into myepisodes

When usin the myepisodes plugin you get the warning "Login to myepisodes.com failed, please check your account data or see if the site is down."
It seems that they have changed so you have to access their site with www.myepisodes.com.

I made a copy of the plugin and changed all the urls to www.myepisodes.com and it worked

movie_queue forget movie Multiple rows were found for one()

Thanks for the response in #76

Based on the suggestion there I upgraded and now have a different error:

$ flexget -V
1.1.119
You are on the latest release.
$ flexget --movie-queue forget tt1327773
2013-09-12 22:22 ERROR    task                          BUG: Unhandled error in plugin movie_queue_manager: Multiple rows were found for one()
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/flexget/task.py", line 365, in __run_plugin
    return method(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/event.py", line 21, in __call__
    return self.func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/cli/movie_queue.py", line 64, in on_process_start
    title = queue_forget(**what)
  File "/usr/local/lib/python2.7/dist-packages/flexget/utils/database.py", line 25, in wrapper
    result = func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/filter/movie_queue.py", line 253, in queue_forget
    item = query.one()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2193, in one
    "Multiple rows were found for one()")
MultipleResultsFound: Multiple rows were found for one()
2013-09-12 22:22 INFO     task                          Aborting task (plugin: movie_queue_manager)

It was also suggested in #76 to delete and manually readd the movie. Specifically where would I attempt to delete the movie from?

$ flexget --movie-queue del tt1327773
2013-09-12 22:27 ERROR    task                          BUG: Unhandled error in plugin movie_queue_manager: Multiple rows were found for one()
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/flexget/task.py", line 365, in __run_plugin
    return method(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/event.py", line 21, in __call__
    return self.func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/cli/movie_queue.py", line 54, in on_process_start
    title = queue_del(**what)
  File "/usr/local/lib/python2.7/dist-packages/flexget/utils/database.py", line 25, in wrapper
    result = func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/filter/movie_queue.py", line 226, in queue_del
    item = query.one()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2193, in one
    "Multiple rows were found for one()")
MultipleResultsFound: Multiple rows were found for one()
2013-09-12 22:27 INFO     task                          Aborting task (plugin: movie_queue_manager)

Using --debug shows more lines of output, but it does not seem relevant. I can include it if needed.

Thanks in advance for any suggestions.

manager.py: UnicodeDecodeError

I have the character "โœ“" in my config, and flexget check throws this error:

Traceback (most recent call last):
  File "/usr/bin/flexget", line 9, in <module>
    load_entry_point('FlexGet==1.2', 'console_scripts', 'flexget')()
  File "/usr/lib/python2.7/site-packages/flexget/__init__.py", line 25, in main
    manager = Manager(options)
  File "/usr/lib/python2.7/site-packages/flexget/manager.py", line 106, in __init__
    self.initialize()
  File "/usr/lib/python2.7/site-packages/flexget/manager.py", line 135, in initialize
    fire_event('manager.before_config_load', self)
  File "/usr/lib/python2.7/site-packages/flexget/event.py", line 101, in fire_event
    event(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/flexget/event.py", line 21, in __call__
    return self.func(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/flexget/plugins/cli/check.py", line 15, in pre_check_config
    manager.pre_check_config(config.read())
  File "/usr/lib/python2.7/site-packages/flexget/manager.py", line 449, in pre_check_config
    if '# warnings off' in line.strip().lower():
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 2: ordinal not in range(128)

This seems to work (manager.py line 448):

-        for line in config.splitlines():
+        for line in config.decode('utf-8').splitlines():

Unhandled error in plugin subliminal

When executing some tasks, I got this error (using Flexget 1.2.127):

ERROR    task          Get Subtitles for Series BUG: Unhandled error in plugin subliminal: tuple index out of range
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/flexget/task.py", line 409, in __run_plugin
    return method(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/event.py", line 21, in __call__
    return self.func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/output/subtitles_subliminal.py", line 103, in on_task_output
    log.debug(err.args[0])
IndexError: tuple index out of range

Unhandled error in plugin object

$ flexget --version
1.2.69
Latest release: 1.2.70

Unhandled error prints:

2014-01-28 18:52 ERROR    task          search-series   BUG: Unhandled error in plugin archive: 'Archive' object has no attribute 'on_task_exit'
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/flexget/task.py", line 420, in __run_plugin
    return method(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/event.py", line 21, in __call__
    return self.func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/generic/archive.py", line 216, in on_task_abort
    self.on_task_exit(task, config)
AttributeError: 'Archive' object has no attribute 'on_task_exit'
2014-01-28 18:52 WARNING  task          search-series   Aborting task (plugin: archive)
2014-01-28 18:52 ERROR    task          search-series   abort handlers aborted!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/flexget/task.py", line 551, in execute
    self.__run_task_phase('abort')
  File "/usr/local/lib/python2.7/dist-packages/flexget/task.py", line 387, in __run_task_phase
    response = self.__run_plugin(plugin, phase, args)
  File "/usr/local/lib/python2.7/dist-packages/flexget/task.py", line 447, in __run_plugin
    self.abort(msg)
  File "/usr/local/lib/python2.7/dist-packages/flexget/task.py", line 312, in abort
    raise TaskAbort(reason, silent=silent)
TaskAbort

Webui: Exception on /configure/

Using FlexGet 1.2.102, when I try the web-ui and click on the configure tab, I get this:

2014-03-01 11:21 ERROR    flexget.ui.webui                 Exception on /configure/ [GET]
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/usr/local/lib/python2.7/dist-packages/flexget/ui/plugins/configure/configure.py", line 16, in index
    return render_template('configure/configure.html')
  File "/usr/local/lib/python2.7/dist-packages/flask/templating.py", line 128, in render_template
    context, ctx.app)
  File "/usr/local/lib/python2.7/dist-packages/flask/templating.py", line 110, in _render
    rv = template.render(context)
  File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 969, in render
    return self.environment.handle_exception(exc_info, True)
  File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 742, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python2.7/dist-packages/flexget/ui/plugins/configure/templates/configure/configure.html", line 1, in top-level template code
    {% extends "layout.html" %}
  File "/usr/local/lib/python2.7/dist-packages/flexget/ui/templates/layout.html", line 44, in top-level template code
    {% block menu %}
  File "/usr/local/lib/python2.7/dist-packages/flexget/ui/plugins/configure/templates/configure/configure.html", line 31, in block "menu"
    {% for a_name in manager.config[category].iterkeys() %}
UndefinedError: 'list object' has no attribute 'iterkeys'

I don't know the code, but maybe

{% for a_name in manager.config[category].iterkeys() %}

should be

{% for a_name in manager.config[category] %}

At least, when I do that, it works, but then I get this by clicking on a schedule:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/usr/local/lib/python2.7/dist-packages/flexget/ui/plugins/configure/configure.py", line 92, in edit_text
    config = manager.config[root][name]
TypeError: list indices must be integers, not unicode

Schedule Improvement

Hi all,

Is it a feasible idea to extend the Schedule with an option to run a task within a range of hours (for instance 10am-5pm) and optionally its periodicity.

Lets take the following configuration as an example (with the new keys between and with_interval):

schedules:
  # Run any task starting with 'weekly_' on tuesdays hourly between 1pm and 3pm
  - tasks: 'weekly_*'
    interval:
      weeks: 1
      on_day: tuesday
      between: 1:00 pm - 3:00 pm
      with_interval: 60m #minutes which could be the default

This is an example, because I don't really know if its better to create new keys or use existing keys in different contexts, i.e., with_interval could be replaced with the existing minutes key, and the possibility to use in other scheduling combinations.

Thanks!

config_changed no longer detected when using rss:all_entries:no

Before the recent upgrade, when the config was changed it would trigger an event that would ignore caches and reprocess everything. This was the correct behavior. Now, this no longer happens. When I change my config, I have to manually execute with --no-cache, otherwise it will not reprocess the seen entries in the feed. I'm using all_entries:no with rss plugin. The fix for #143 doesn't solve the problem, so this may be a deeper issue.

subliminal plugin doesn't work

Although I have installed babelfish with easy_install babelfish, my tasks fail with this message:

CRITICAL task TASK_NAME Plugin subliminal cannot be used because dependency babelfish is missing.

I'm using flexget 1.2.104

Error: --single-version-externally-managed not recognized

Hi!

I've been tried to upgrade to the latest version(1.1.66) today, but after running this command: sudo pip install --upgrade flexget - the pip reported error. I've uploaded the full output, and the last pip log from root dir: http://paste2.org/GD5Z5JEk (my username has been replaced with "$MY_NAME$").

Please, help me to make this version work! Thanks!

Flexget-Paven dependency?

This is more of a question than an issue.

I was trying to install Flexget on my Raspberry Pi. I followed all the steps until pip install flexget on http://flexget.com/wiki/InstallWizard/Linux/Environment/FlexGet. I got an error stating that a compatible version of Jinja2 was not found at Flexget during the pip install. Did a bit of googling and saw that installing Paven has helped others solve similar issues. So I pip install paven, and tried again. This time it went fine.

It seems Paven is a dependancy. If so, why is Paven not mentioned in the dependancies?

PyLoad plugin fails with Internal API Error

I'm using pyload as packaged by http://spk.unzureichende.info/ for Synology, using 0.4.9-4, and the latest flexget.

The problem seems to be the way urllib does the request:

>>> from urllib import urlencode; from urllib2 import urlopen; urlopen('http://localhost:8000/api/login', urlencode({'a': 1}))
urllib2.HTTPError: HTTP Error 500: Internal Server Error

Strangly, it works using requests:

>>> import requests; requests.post('http://dollhouse:8000/api/login')
<Response [200]>

It turns out that this is because urllib2 only sets this Accpet-Encoding header:

Accept-Encoding: identity

Things look better when I add gzip manually:

>>> import urllib2; headers = { 'Accept' : '*/*', 'Accept-Encoding': 'identity, gzip'}; re = urllib2.Request('http://localhost:8000/api/login', "", headers); urllib2.urlopen(re)
<addinfourl at 41238752 whose fp = <socket._fileobject object at 0x27466d0>>

I should say that I am using pyload as packaged by http://spk.unzureichende.info/ for Synology, using 0.4.9-4.

I've also described the issue here:

pyload/pyload#297

Unhandled error in plugin rottentomatoes

flexget --version
1.2.83
Latest release: 1.2.84

2014-02-10 19:04 ERROR    task          top-dvds        BUG: Unhandled error in plugin rottentomatoes: (IntegrityError) rottentomatoes_search_results.movie_i
d may not be NULL u'UPDATE rottentomatoes_search_results SET movie_id=? WHERE rottentomatoes_search_results.id = ?' (None, 2)
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/flexget/task.py", line 420, in __run_plugin
    return method(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/event.py", line 21, in __call__
    return self.func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/filter/rottentomatoes.py", line 98, in on_task_filter
    lookup(entry)
  File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/metainfo/rottentomatoes_lookup.py", line 100, in lookup
    api_key=key 
  File "/usr/local/lib/python2.7/dist-packages/flexget/plugin.py", line 124, in wrapped_func
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/utils/database.py", line 25, in wrapper
    result = func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/api_rottentomatoes.py", line 305, in lookup_movie
    movie = _set_movie_details(movie, session, result, api_key)
  File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/api_rottentomatoes.py", line 430, in _set_movie_details
    session.flush()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1879, in flush
    self._flush(objects)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1997, in _flush
    transaction.rollback(_capture_exception=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 57, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1961, in _flush
    flush_context.execute()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 370, in execute
    rec.execute(self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 523, in execute
    uow
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 59, in save_obj
    mapper, table, update)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 510, in _emit_update_statements
    execute(statement, params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 717, in execute
    return meth(self, multiparams, params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 317, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py
", line 814, in _execute_clauseelement
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 814, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 927, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1076, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 185, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 920, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 425, in do_execute
    cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) rottentomatoes_search_results.movie_id may not be NULL u'UPDATE rottentomatoes_search_results SET movie_id=? WHERE rottentomatoes_search_results.id = ?' (None, 2)

--series <series> doesn't work if one series name is a substring of another

Just stumbeld upton this:

$ flexget --series "Some"
ERROR: Multiple series match to `some`.
 - Some
 - Some Series

A famous example could be "Lost" and "Lost Girl" or "Stargate" and "Stargate (Atlantis|Universe)" or ....

I just don't have the time to dig into this but it seems like in the series cli code we just need to check for an exact match in case multiple results have been returned...

exists_movie doesn't work

The exists_movie plugin does not work correctly for me. In my case I have all my movies in one directory (/content/video/Movies) and the plugin doesn't correctly reject entries that appear there. Looking at the plugin code it appears to be because it expects each movie to be in it's own folder? It generates lists of files and paths under the specified path using os.walk but only does imdb lookups on the directories and ignores the files.

clean_transmission removes queued torrents

The clean_transmission plugin does not have feature parity with the removewhendone parameter - it removes torrents before they even begin downloading.

removewhendone checked if the status was "stopped" and the ratio was valid.

Two items:

  • clean_transmission does not check the status. I have not tested, but I believe that this will cause paused torrents to incorrectly be removed if all data has been downloaded. This would be unexpected.
  • the size check is incorrect because when the magnet metadata is being retrieved, size and completed are both zero (100% complete!) - causing the torrent to be removed before starting.

If the removewhendone parameter will be moved to a new plugin, please keep the behavior the same.

'clean_transmission' plugin has many problems

  1. Fails unless 'enabled: yes' is added to the config. See, http://flexget.com/ticket/2378
  2. 'host' and 'port' do not use their documented defaults and the task aborts if they're not provided.
  3. 'netrc' option does not appear to work and the task aborts if 'username' and 'password' are not provided. The 'netrc' option works for the 'transmission' plugin correctly.

screen shot 2014-01-18 at 16 29 17

clean_transmission shouldn't remove non-flexget added torrents

The clean_transmission plugin currently removes all torrents within Transmission that fit the ratio and / or duration criteria. The behavior was as a surprise.

Maybe adding an option, like "all: " that defaults to false would be more reasonable.

downloaded torrent files saved with encoded file name

The torrent files downloaded via rss saved with encoded file name. For example,%5bAAA%5dXXXXXX.torrent([AAA]XXXXXX.torrent).I know this is to support none ascii character.
But when it downloaded, can it be saved with decoded file name?
Thank you.
flexget version:1.1.99

by the way, when i post this content on flexget trac site, it said "Submission rejected as potential spam (BlogSpam says content is spam (SpamBayes))".

movie_queue cannot forget movie

I have a few movies that have been downloaded and movie_queue tracks them as being downloaded. However, attempting to forget them fails. Can I provide database or other information to troubleshoot or are there known workarounds?

$ flexget -V
1.1.106
You are on the latest release.
$ flexget --movie-queue downloaded | grep Butler
tt1327773 None The Butler dvdrip-bluray 720p+ True
$ flexget --movie-queue forget tt1327773
ERROR: title=Lee Daniels' The Butler, imdb_id=tt1327773, tmdb_id=132363 not found from queue
$ flexget --movie-queue forget "The Butler"
ERROR: title=Lee Daniels' The Butler, imdb_id=tt1327773, tmdb_id=132363 not found from queue
$ flexget --movie-queue forget tmdb_id=132363
ERROR: title=Lee Daniels' The Butler, imdb_id=tt1327773, tmdb_id=132363 not found from queue

--forget-rejected is missing

Up until now I had been using content_filter to reject '*.rar', but I decided to accept them so I removed the content_filter plugin from my config and reran, but I keep getting messages like this:

films_feed1 REJECTED: `Enders Game 2013 BDRip X264-SPARKS` by remember_rejected plugin because rejected on behalf of content_filter plugin: has banned file *.rar

I tried this, but it had no effect:

$ flexget seen forget 'Enders Game 2013 BDRip X264-SPARKS'
Removed 0 titles (0 fields)

The wiki page for the only_new plugin documents the --forget-rejected option, which sounds like it would resolve this issue, but the new version of flexget no longer implements it.

Apple Trailers: seen even if not downloaded

I'm writing about a minor issue.
Apple Trailers are often multiple for the same movie.
If two will be downloaded and one of them fails, the latter will be marked as 'seen' and not re-downloaded.

My config:

tasks:
  AppleTrailers:
    apple_trailers: 1080p
    accept_all: yes
    download: ~/USB32/appletrailers

flexget.log output:

2013-04-17 16:31 INFO     download      AppleTrailers   Downloading: No Place On Earth
2013-04-17 16:31 ERROR    entry         AppleTrailers   Failed No Place On Earth (IOError)
2013-04-17 16:31 INFO     download      AppleTrailers   Downloading: No Place On Earth #the second one
2013-04-17 16:35 INFO     remember_rej  AppleTrailers   Remembering rejection of `No Place On Earth` for 60 minutes #the first one

so, it downloaded one 'no place on earth', filename: noplaceonearth-tlr1_h1080p.mov

flexget --test output after that:

2013-04-17 17:39 VERBOSE  task          AppleTrailers   REJECTED: `No Place On Earth` by seen plugin because entry with title `No Place On Earth` is already seen
2013-04-17 17:39 VERBOSE  task          AppleTrailers   REJECTED: `No Place On Earth` by seen plugin because entry with title `No Place On Earth` is already seen

rejecting both, since the title is the same.

I guess it could be easily solved by using the full filename as 'title' (or something like movie_title_$incremental_number), but I'm not good enough with python (or the flexget internals) to do it myself.

Pushbullet Help

Hi I'm having trouble configuring pushbullet. I managed to configure pushover correctly but I'm now using pushbullet. Is there any chance I can see a real world example of the configuration?

Thanks

Error when saving scheduler

I'm using a few weeks old flexget version, and I get following error when saving scheduler:

Apr 02 18:21:17 ananas flexget-webui[10587]: Traceback (most recent call last):
Apr 02 18:21:17 ananas flexget-webui[10587]: File "/nix/store/sqr7kv45bqm3w1m2vnw0x0sa61b98kb9-python-flask-0.9/lib/python2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1687, in wsgi_app
Apr 02 18:21:17 ananas flexget-webui[10587]: response = self.full_dispatch_request()
Apr 02 18:21:17 ananas flexget-webui[10587]: File "/nix/store/sqr7kv45bqm3w1m2vnw0x0sa61b98kb9-python-flask-0.9/lib/python2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1360, in full_dispatch_request
Apr 02 18:21:17 ananas flexget-webui[10587]: rv = self.handle_user_exception(e)
Apr 02 18:21:17 ananas flexget-webui[10587]: File "/nix/store/sqr7kv45bqm3w1m2vnw0x0sa61b98kb9-python-flask-0.9/lib/python2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1358, in full_dispatch_request
Apr 02 18:21:17 ananas flexget-webui[10587]: rv = self.dispatch_request()
Apr 02 18:21:17 ananas flexget-webui[10587]: File "/nix/store/sqr7kv45bqm3w1m2vnw0x0sa61b98kb9-python-flask-0.9/lib/python2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1344, in dispatch_request
Apr 02 18:21:17 ananas flexget-webui[10587]: return self.view_functions[rule.endpoint](**req.view_args)
Apr 02 18:21:17 ananas flexget-webui[10587]: File "/nix/store/wmvl0ggi4ih85snnx7kfffq9xnn7mcqm-python-FlexGet-1.0.3353/lib/python2.7/site-packages/FlexGet-1.0-py2.7.egg/flexget/ui/plugins/log_viewer/log_viewer.py", line 65, in get_logdata
Apr 02 18:21:17 ananas flexget-webui[10587]: page = int(request.args.get('page'))
Apr 02 18:21:17 ananas flexget-webui[10587]: ValueError: invalid literal for int() with base 10: '0.74'
Apr 02 18:21:19 ananas flexget-webui[10587]: 2013-04-02 18:21 ERROR    flexget.ui.webui                 Exception on /log/_get_logdata.json [GET]
Apr 02 18:21:19 ananas flexget-webui[10587]: Traceback (most recent call last):
Apr 02 18:21:19 ananas flexget-webui[10587]: File "/nix/store/sqr7kv45bqm3w1m2vnw0x0sa61b98kb9-python-flask-0.9/lib/python2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1687, in wsgi_app
Apr 02 18:21:19 ananas flexget-webui[10587]: response = self.full_dispatch_request()
Apr 02 18:21:19 ananas flexget-webui[10587]: File "/nix/store/sqr7kv45bqm3w1m2vnw0x0sa61b98kb9-python-flask-0.9/lib/python2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1360, in full_dispatch_request
Apr 02 18:21:19 ananas flexget-webui[10587]: rv = self.handle_user_exception(e)
Apr 02 18:21:19 ananas flexget-webui[10587]: File "/nix/store/sqr7kv45bqm3w1m2vnw0x0sa61b98kb9-python-flask-0.9/lib/python2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1358, in full_dispatch_request
Apr 02 18:21:19 ananas flexget-webui[10587]: rv = self.dispatch_request()
Apr 02 18:21:19 ananas flexget-webui[10587]: File "/nix/store/sqr7kv45bqm3w1m2vnw0x0sa61b98kb9-python-flask-0.9/lib/python2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1344, in dispatch_request
Apr 02 18:21:19 ananas flexget-webui[10587]: return self.view_functions[rule.endpoint](**req.view_args)
Apr 02 18:21:19 ananas flexget-webui[10587]: File "/nix/store/wmvl0ggi4ih85snnx7kfffq9xnn7mcqm-python-FlexGet-1.0.3353/lib/python2.7/site-packages/FlexGet-1.0-py2.7.egg/flexget/ui/plugins/log_viewer/log_viewer.py", line 65, in get_logdata
Apr 02 18:21:19 ananas flexget-webui[10587]: page = int(request.args.get('page'))
Apr 02 18:21:19 ananas flexget-webui[10587]: ValueError: invalid literal for int() with base 10: '0.74'
Apr 02 18:21:27 ananas flexget-webui[10587]: 2013-04-02 18:21 INFO     ui.schedule                   new interval for __DEFAULT__: 10 minutes
Apr 02 18:21:28 ananas flexget-webui[10587]: 2013-04-02 18:21 ERROR    flexget.ui.webui                 Exception on /schedule/ [POST]
Apr 02 18:21:28 ananas flexget-webui[10587]: Traceback (most recent call last):
Apr 02 18:21:28 ananas flexget-webui[10587]: File "/nix/store/sqr7kv45bqm3w1m2vnw0x0sa61b98kb9-python-flask-0.9/lib/python2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1687, in wsgi_app
Apr 02 18:21:28 ananas flexget-webui[10587]: response = self.full_dispatch_request()
Apr 02 18:21:28 ananas flexget-webui[10587]: File "/nix/store/sqr7kv45bqm3w1m2vnw0x0sa61b98kb9-python-flask-0.9/lib/python2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1360, in full_dispatch_request
Apr 02 18:21:28 ananas flexget-webui[10587]: rv = self.handle_user_exception(e)
Apr 02 18:21:28 ananas flexget-webui[10587]: File "/nix/store/sqr7kv45bqm3w1m2vnw0x0sa61b98kb9-python-flask-0.9/lib/python2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1358, in full_dispatch_request
Apr 02 18:21:28 ananas flexget-webui[10587]: rv = self.dispatch_request()
Apr 02 18:21:28 ananas flexget-webui[10587]: File "/nix/store/sqr7kv45bqm3w1m2vnw0x0sa61b98kb9-python-flask-0.9/lib/python2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1344, in dispatch_request
Apr 02 18:21:28 ananas flexget-webui[10587]: return self.view_functions[rule.endpoint](**req.view_args)
Apr 02 18:21:28 ananas flexget-webui[10587]: File "/nix/store/wmvl0ggi4ih85snnx7kfffq9xnn7mcqm-python-FlexGet-1.0.3353/lib/python2.7/site-packages/FlexGet-1.0-py2.7.egg/flexget/ui/plugins/schedule/schedule.py", line 126, in index
Apr 02 18:21:28 ananas flexget-webui[10587]: update_interval(request.form, task)
Apr 02 18:21:28 ananas flexget-webui[10587]: File "/nix/store/wmvl0ggi4ih85snnx7kfffq9xnn7mcqm-python-FlexGet-1.0.3353/lib/python2.7/site-packages/FlexGet-1.0-py2.7.egg/flexget/ui/plugins/schedule/schedule.py", line 116, in update_interval
Apr 02 18:21:28 ananas flexget-webui[10587]: start_timer(interval)
Apr 02 18:21:28 ananas flexget-webui[10587]: File "/nix/store/wmvl0ggi4ih85snnx7kfffq9xnn7mcqm-python-FlexGet-1.0.3353/lib/python2.7/site-packages/FlexGet-1.0-py2.7.egg/flexget/ui/plugins/schedule/schedule.py", line 182, in start_timer
Apr 02 18:21:28 ananas flexget-webui[10587]: if manager.options.autoreload:
Apr 02 18:21:28 ananas flexget-webui[10587]: AttributeError: 'Namespace' object has no attribute 'autoreload'

rss plugin: all_entries:no now issues warning

When using all_entries:no for rss plugin, it didn't used to produce a warning when there were no new entries. Now every time a feed is run and there are no new entries (which happens a lot), this error is in the logs:

Task didn't produce any entries. This is likely due to a mis-configured or non-functional input.

My logs show this started on January 3, so it was a change on or before then.

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.