1
0
mirror of https://github.com/mxpv/podsync.git synced 2024-05-11 05:55:04 +00:00

Add resolve counter

This commit is contained in:
Maksym Pavlenko
2019-03-18 22:57:43 -07:00
parent 272da90480
commit eb0e2be713
2 changed files with 42 additions and 0 deletions

View File

@ -1,6 +1,8 @@
import os
import youtube_dl
import boto3
from datetime import datetime, time
from dateutil.relativedelta import relativedelta
class InvalidUsage(Exception):
@ -10,6 +12,7 @@ class InvalidUsage(Exception):
dynamodb = boto3.resource('dynamodb')
feeds_table = dynamodb.Table(os.getenv('RESOLVER_DYNAMO_FEEDS_TABLE', 'Feeds'))
counter_table = dynamodb.Table(os.getenv('RESOLVER_DYNAMO_RESOLVE_COUNTERS_TABLE', 'ResolveCounters'))
opts = {
'quiet': True,
@ -31,6 +34,9 @@ def handler(event, context):
feed_id = event['feed_id']
video_id = event['video_id']
# Update resolve requests counter
_update_resolve_counter(feed_id)
redirect_url = download(feed_id, video_id)
return {
@ -78,6 +84,36 @@ def _get_metadata(feed_id):
return dict((k.lower(), v) for k, v in item.items())
def _update_resolve_counter(feed_id):
if not feed_id:
return
now = datetime.utcnow()
day = now.strftime('%Y%m%d')
expires = now + relativedelta(months=3)
response = counter_table.update_item(
Key={
'FeedID': feed_id,
'Day': int(day),
},
UpdateExpression='ADD #count :one SET #exp = if_not_exists(#exp, :ttl)',
ExpressionAttributeNames={
'#count': 'Count',
'#exp': 'Expires',
},
ExpressionAttributeValues={
':one': 1,
':ttl': int(expires.timestamp()),
},
ReturnValues='UPDATED_NEW',
)
attrs = response['Attributes']
return attrs['Count']
def _resolve(url, metadata):
if not url:
raise InvalidUsage('Invalid URL')

View File

@ -34,3 +34,9 @@ class TestDynamo(unittest.TestCase):
self.assertIsNotNone(item['format'])
self.assertIsNotNone(item['quality'])
self.assertIsNotNone(item['provider'])
def test_counter(self):
counter = ytdl._update_resolve_counter('86qZ')
self.assertEqual(counter, 1)
counter = ytdl._update_resolve_counter('86qZ')
self.assertEqual(counter, 2)