Synology-Forum.nl
Packages => 3rd party Packages => Auto-Sub => Topic gestart 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 :-)
-
Dit kun je beter aanvragen via de ontwikkel website van AutoSub: https://code.google.com/p/autosub-bootstrapbill/
-
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.
-
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.
-
Ja, graag :D
-
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
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.
-
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
-
@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.
-
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.
-
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.
-
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 :-)
-
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.
-
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 :-)
-
Ik zal Boxcar 2 dit weekend toevoegen aan de officiële code :-)
-
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"
})
-
ALs je in dat laatste stuk deze regel:
'notification[title]': title + ' : subtitle downloaded',
vervangt door:
'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.
-
Yes, dat werkt!
Simpele aanpassing, veel resultaat!
Ik ben er blij mee. En hopelijk velen met mij :-)
-
@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.
-
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)
-
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. :)
-
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. :-)
-
Super mooi!
-
Is het pakketje er al? :D
-
Ja er is een nieuwe release van autosub beschikbaar.
-
Yes :-)