コード例 #1
0
ファイル: api.py プロジェクト: lrnselfreliance/wrolpi
from sanic import response, Blueprint
from sanic.request import Request

from api.common import validate_doc, logger, json_response, wrol_mode_check
from api.db import get_db_context
from api.errors import UnknownDirectory
from api.videos.channel.lib import get_minimal_channels, delete_channel, update_channel, get_channel, create_channel
from api.videos.common import check_for_channel_conflicts, \
    get_relative_to_media_directory, make_media_directory
from api.videos.schema import ChannelsResponse, ChannelResponse, JSONErrorResponse, ChannelPostRequest, \
    ChannelPostResponse, ChannelPutRequest, SuccessResponse

channel_bp = Blueprint('Channel', url_prefix='/channels')

logger = logger.getChild(__name__)


@channel_bp.get('/')
@validate_doc(
    summary='Get a list of all Channels',
    produces=ChannelsResponse,
)
async def get_channels(_: Request):
    channels = await get_minimal_channels()
    return response.json({'channels': channels})


@channel_bp.route('/<link:string>', methods=['GET', 'OPTIONS'])
@validate_doc(
    summary='Get a Channel',
コード例 #2
0
ファイル: downloader.py プロジェクト: lrnselfreliance/wrolpi
from typing import Tuple, List

from sqlalchemy import or_
from sqlalchemy.orm import Session
from sqlalchemy.orm.exc import NoResultFound
from youtube_dl import YoutubeDL

from api.common import logger, today, ProgressReporter
from api.db import get_db_context, get_db_curs
from .captions import process_captions
from .common import get_downloader_config, get_absolute_media_path, add_video_to_skip_list
from .models import Video, Channel
from ..errors import UnknownChannel, ChannelURLEmpty
from ..vars import UNRECOVERABLE_ERRORS

logger = logger.getChild(__name__)
ydl_logger = logger.getChild('youtube-dl')

YDL = YoutubeDL()
YDL.params['logger'] = ydl_logger
YDL.add_default_info_extractors()


def update_channel(channel=None, link: str = None):
    """
    Connect to the Channel's host website and pull a catalog of all videos.  Insert any new videos into the DB.

    It is expected that any missing videos will be downloaded later.
    """
    with get_db_context() as (engine, session):
        if not channel: