Synology-Forum.nl

Packages => 3rd party Packages => Auto-Sub => Topic gestart door: spacewagon op 14 november 2014, 20:27:14

Titel: Ondersteuning voor Boxcar 2
Bericht door: spacewagon op 14 november 2014, 20:27:14
Gaat er ondersteuning komen voor Boxcar 2 in Auto-Sub? Het oude Boxcar werkt niet meer en wordt niet meer ondersteund. Het nieuwe Boxcar 2 werkt prima bij bijvoorbeeld CouchPotato en SickBeard.

Dankje :-)
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: Martijn85 op 17 november 2014, 09:57:44
Dit kun je beter aanvragen via de ontwikkel website van AutoSub: https://code.google.com/p/autosub-bootstrapbill/
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: spacewagon op 17 november 2014, 16:56:15
Gedaan, op 15 juli al... :-)

Het is punt 188: https://code.google.com/p/autosub-bootstrapbill/issues/detail?id=118

Maar met dat punt lijkt daar nog niks te gebeuren. Vandaar de vraag hier.
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: Ben(V) op 17 november 2014, 19:56:21
Om boxcar 2 te gebruiken is maar een kleine wijziging in de code node in de module boxcar.py.
Als je wilt kan ik wel een aangepaste versie hier posten zodat je hem zelf kunt vervangen.
Testen zul je zelf moeten doen, want ik heb geen apple device.

Laat het even weten, dan maak ik een aangepaste versie en post hem hier.
Je moet dan bij de notifiers in autosub boxcar aanzetten en in plaats van het email adres het token opgeven.
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: spacewagon op 18 november 2014, 09:01:53
Ja, graag  :D
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: Ben(V) op 18 november 2014, 10:21:09
Ok ik heb de code aangepast (beetje afgekeken van SickRage).
Je moet onderstaande code in een bestandje genaamd boxcar.py opslaan.
Vervolgens vervang je de orginele boxcar.py door deze versie.
Het lijkt me verstandig de oude te bewaren tot je deze hebt uitgetest.
In autosub zelf moet je boxcar aanzetten en in plaats van het mailadres moet je nu het token dat je van boxcar gekregen hebt daar neer zetten.
Zoals ik al zei kan ik niet testen.
De locatie voor boxcar.py is:
/volume1/@appstore/AutoSub-BootstrapBill/autosub/notify

Code: (python) [Selecteer]
import logging
import autosub
import urllib, urllib2
import time

log = logging.getLogger('thelogger')

API_URL = "https://new.boxcar.io/api/notifications"


def test_notify(boxcaruser):
    if not boxcaruser:
        boxcaruser = autosub.BOXCARUSER
   
    log.debug("Boxcar: Trying to send a notification.")
    title = 'Auto-Sub Bootstrap Bill'
    message = 'Testing Boxcar settings from Auto-Sub.'
    return _send_notify(message, title, boxcaruser)

def send_notify(lang, subtitlefile, videofile, website):
    log.debug("Boxcar 2: Trying to send a notification.")
    title = 'Auto-Sub'
    message = "Auto-Sub just downloaded the following subtitle: \n%s from %s" %(subtitlefile, website)
    boxcaruser = autosub.BOXCARUSER
    return _send_notify(message, title, boxcaruser)

def _send_notify(message, title, boxcaruser, subscribe=False):
    # build up the URL and parameters
    message = message.strip()
    curUrl = API_URL

    # if this is a subscription notification then act accordingly
    if subscribe:
        data = urllib.urlencode({'email': boxcaruser})
        curUrl = curUrl + "/subscribe"
       
    # for normal requests we need all these parameters
    else:
        data = urllib.urlencode({
                'user_credentials': boxcaruser,
                'notification[title]': title + ' : subtitle downloaded',
                'notification[long_message]': message,
                'notification[sound]': "notifier-2"
            })

    # send the request to boxcar
    try:
        req = urllib2.Request(curUrl)
        handle = urllib2.urlopen(req, data)
        handle.close()
           
    except urllib2.URLError, e:
        # if we get an error back that doesn't have an error code then who knows what's really happening
        if not hasattr(e, 'code'):
            log.error("Boxcar: Notification failed.")
            return False
        else:
            log.error("Boxcar: Notification failed. Error code: " + str(e.code))

        # HTTP status 404 if the provided email address isn't a Boxcar user.
        if e.code == 404:
            log.info("Boxcar: Username is wrong/not a boxcar email. Boxcar will send an email to it")
            return False
           
        # For HTTP status code 401's, it is because you are passing in either an invalid token, or the user has not added your service.
        elif e.code == 401:
            # If the user has already added your service, we'll return an HTTP status code of 401.
            if subscribe:
                log.info("Boxcar: Already subscribed to service")
                return False
               
            #HTTP status 401 if the user doesn't have the service added
            else:
                subscribeNote = _send_notify(message, title, boxcaruser, True)
                if subscribeNote:
                    log.debug("Boxcar: Subscription sent")
                    return True
                else:
                    log.error("Boxcar: Subscription could not be send")
                    return False
           
        # If you receive an HTTP status code of 400, it is because you failed to send the proper parameters
        elif e.code == 400:
            log.error("Boxcar: Wrong data send to boxcar")
            return False

    log.info("Boxcar: Notification successful.")
    return True

Edit: Even een te veel geplaatst forum tag uit het code deel verwijdert.
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: Donny op 18 november 2014, 20:40:56
Ik was hier ook al mee bezig geweest maar kan het ook zelf niet testen, aangezien ik never nooit niet zo'n crApple device zal kopen :P
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: Ben(V) op 18 november 2014, 20:48:38
@Donny misschien kun je even naar de code kijken of ik geen stomme fouten gemaakt heb. Ben nog niet zo lang met python bezig.
Ik heb met minimale veranderingen boxcar 2 proberen te ondersteunen.

Spacewagon kan het testen.
Als het werkt kun je het misschien in autosub opnemen.
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: Donny op 18 november 2014, 22:38:06
Ik heb lokaal op mijn pc de boxcar code ook al aangepast, als ik een test Access Code van iemand kan krijgen dan kan ik dit testen en de code op de Google code pagina zetten.
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: spacewagon op 19 november 2014, 10:00:51
Thanks, Ben(V). Helaas werkt het niet. Ik het volgende gedaan:

- AutoSub pakket stopgezet
- het orignele boxcar.py lokaal gezet
- het orginele boxcar.py van naam gewijzigd via WinSCP
- lokaal met Notepad++ de inhoud van boxcar.py vervangen door jouw code
- met WinSCP de nieuwe boxcar.py op de juiste plek gezet
- rechten aangepast naar 0777
- AutoSub pakket opnieuw starten: foutmelding: "kon pakket niet uitvoeren"

Ik dacht, misschien ligt het aan de 'eigenaar'. De bestanden hebben allemaal als eigenaar 'autosub-', maar de nieuwe boxcar.py heeft 'root' als eigenaar. Via WinSCP is de eigenaar niet te veranderen: unknow user.

Toen heb ik de aangepaste boxcar.py verwijderd en de originele weer zijn originele naam gegeven. Daarna was AutoSub weer te starten.

Daarna dit geprobeerd:

- AutoSub pakket stopgezet
- het orignele boxcar.py lokaal gezet
- het orginele boxcar.py via WinSCP bewerkt
- de inhoud van boxcar.py vervangen door jouw code
- aangepaste boxcar.py opgeslagen
- rechten en eigenaar bleven zoals ze waren
- AutoSub pakket opnieuw starten: foutmelding: "kon pakket niet uitvoeren"

Het orginele boxcar.py weer teruggezet: AutoSub draait weer.

Donny: je mag mijn token wel gebruiken om te testen.
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: spacewagon op 19 november 2014, 10:08:04
Update

Het werkt wel :D

In de code van Ben(V) staat op de allerlaatste regel [ code]. Die heb ik netjes gekopieerd. Maar als ik de code van Ben(V) vergelijk met het origineel, dan blijkt [ code] daar niet in te staan.

Dus heb ik boxcar.py vervangen door de code van Ben(V) zonder [ code].

En... het werkt :-) Testbericht is aangekomen op mijn telefoon!

Ik heb via WinSCP het orignele bestand bewerkt en daar de code aangepast. Dat werkt. Daarna heb ik er een verse boxcar.py neergezet, met de 'verkeerde' eigenaar. Dat werkt ook :-)
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: Ben(V) op 19 november 2014, 10:13:32
Leuk dat het werkt.
Dat [ code]was een per ongeluk geplaatste tag van dit forum.
Sorry voor dat foutje.

Misschien kun je je token met een PM aan Donny geven zodat hij zelf even kan testen.
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: spacewagon op 19 november 2014, 10:17:19
Dat vermoedde ik al. Geen probleem.

Het werkt nu. Super mooi dus!

Code aanpassen, nieuw icoontje, nieuwe titel, nieuwe tekst in het i-tje en verpakken in een mooie pakket-update :-)
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: Donny op 19 november 2014, 22:57:28
Ik zal Boxcar 2 dit weekend toevoegen aan de officiële code :-)
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: spacewagon op 20 november 2014, 09:57:38
Gaaf!

Misschien is er nog een kleine tweak mogelijk?

Vannacht ontving ik de eerste officiële melding via Boxcar 2 dat een ondertitel gedownload was. De titel van het bericht was:

AutoSub : subtitle downloaded

Dat was ook het bericht dat ik zag in de push melding op mijn iPhone.

Ik moet vervolgens de app Boxcar 2 openen om de inhoud (message) te zien. In de app zag ik om welke ondertitel het ging.

Het zou heel handig zijn als de naam van de ondertitel al in de titel van de notification komt te staan. Dus dat je iets ziet zoals onderstaand:

AutoSub just downloaded subtitle: Homeland - SE0408 - 720p HDTV x264-Killers.srt

Eigenlijk stop je dan de message al in de title van de notification.

Ik dacht de code aan te passen in:

def send_notify(lang, subtitlefile, videofile, website):
    log.debug("Boxcar 2: Trying to send a notification.")
    title = "Auto-Sub just downloaded the following subtitle: \n%s from %s" %(subtitlefile, website)
    message = "Auto-Sub just downloaded the following subtitle: \n%s from %s" %(subtitlefile, website)
    boxcaruser = autosub.BOXCARUSER
    return _send_notify(message, title, boxcaruser)

Maar verderop zag ik ook nog dit staan. En durfde er verder niet mee te experimenteren, omdat ik bang was kapot te maken :|

# for normal requests we need all these parameters
    else:
        data = urllib.urlencode({
                'user_credentials': boxcaruser,
                'notification[title]': title + ' : subtitle downloaded',
                'notification[long_message]': message,
                'notification[sound]': "notifier-2"
            })
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: Ben(V) op 20 november 2014, 10:41:00
ALs je in dat laatste stuk deze regel:
Code: (python) [Selecteer]
'notification[title]': title + ' : subtitle downloaded',
vervangt door:
Code: (python) [Selecteer]
'notification[title]': message,
Krijg je dezelfde tekst in de header als in de hele message.

PS als je dat te lang vind kun je bovenaan de static tekst van message veranderen.
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: spacewagon op 20 november 2014, 10:52:04
Yes, dat werkt!

Simpele aanpassing, veel resultaat!

Ik ben er blij mee. En hopelijk velen met mij :-)
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: Donny op 23 november 2014, 21:34:09
@spacewagon, kan je misschien deze code even testen?

import logging
import autosub
import urllib, urllib2
import time

log = logging.getLogger('thelogger')

API_URL = "https://new.boxcar.io/api/notifications"

def test_notify(boxcaruser):
    if not boxcaruser:
        boxcaruser = autosub.BOXCARUSER
   
    log.debug("Boxcar2: Trying to send a notification.")
    title = 'Auto-Sub Bootstrap Bill'
    message = 'Testing Boxcar2 settings from Auto-Sub.'
    return _send_notify(message, title, boxcaruser)

def send_notify(lang, subtitlefile, videofile, website):
    log.debug("Boxcar2: Trying to send a notification.")
    title = 'Auto-Sub Bootstrap Bill'
    message = "Auto-Sub just downloaded the following subtitle: \n%s from %s" %(subtitlefile, website)
    boxcaruser = autosub.BOXCARUSER
    return _send_notify(message, title, boxcaruser)

def _send_notify(message, title, boxcaruser):
    """
    Sends a boxcar2 notification to the address provided
    msg: The message to send (unicode)
    title: The title of the message
    boxcaruser: The access token to send notification to
    returns: True if the message succeeded, False otherwise
    """
   
    # build up the URL and parameters
    msg = message.strip().encode('utf-8')

    data = urllib.urlencode({
        'user_credentials': boxcaruser,
        'notification[title]': title + " - " + msg,
        'notification[long_message]': msg,
        'notification[source_name]': "Auto-Sub Bootstrap Bill"
    })
   
    # send the request to boxcar2
    try:
        req = urllib2.Request(API_URL)
        handle = urllib2.urlopen(req, data)
        handle.close()
    except urllib2.URLError, e:
        # FIXME: Python 2.5 hack, it wrongly reports 201 as an error
        if hasattr(e, 'code') and e.code == 201:
            log.info("Boxcar2: Notification successful.")
            return True
       
        # if we get an error back that doesn't have an error code then who knows what's really happening
        if not hasattr(e, 'code'):
            log.error("Boxcar2: Notification failed." + e)
        else:
            log.error("Boxcar2: Notification failed. Error code: " + str(e.code))
        if e.code == 404:
            log.error("Boxcar2: Access token is wrong/not associated to a device.")
        elif e.code == 401:
            log.error("Boxcar2: Access token not recognized.")
        elif e.code == 400:
            log.error("Boxcar2: Wrong data sent to boxcar.")
        elif e.code == 503:
            log.warning("Boxcar2: Boxcar server to busy to handle the request at this time.")
        return False

    log.info("Boxcar2: Notification successful.")
    return True

Als dit werkt dan zal ik het toevoegen aan de officiële Auto-Sub code. Alvast bedankt.
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: spacewagon op 24 november 2014, 21:35:46
Deze code werkt als een zonnetje! 8) 8) 8)

(bij de notifications pagina in Auto-Sub staat nog wel het oude logo, Boxcar en in het i-tje dat je je mailadres moet invullen. dat zit waarschijnlijk in een ander stukje code)
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: Donny op 24 november 2014, 21:50:39
bedankt voor het testen, ik zal morgenavond de code toevoegen aan Auto-Sub en ook de tekst + icoontje aanpassen naar Boxcar2.

Zodra het erop staat zal ik aan Matr1x vragen of hij een update kan maken van het Synology pakket. :)
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: Donny op 25 november 2014, 21:20:35
Ik heb het zojuist toegevoegd. Ik zal Matr1x even een PM sturen om te vragen of hij de SPK kan updaten.

Bedankt voor het testen en de test access code. :-)
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: spacewagon op 28 november 2014, 08:47:52
Super mooi!
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: spacewagon op 08 december 2014, 16:00:50
Is het pakketje er al?  :D
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: Ben(V) op 08 december 2014, 16:07:03
Ja er is een nieuwe release van autosub beschikbaar.
Titel: Re: Ondersteuning voor Boxcar 2
Bericht door: spacewagon op 14 december 2014, 15:09:24
Yes :-)