几个喜马拉雅的节目抓取

By jy02201949 at 2018-08-22 • 0人收藏 • 470人看过

根据论坛大佬发的攻略 利用腾讯云服务器抓取播客教程,自己用python在阿里云上弄了个函数计算的任务,把喜马拉雅的几个节目弄成rss订阅(每天跑一次,免费额度爽),欢迎取用,大家看看有什么经典节目要加进来的


晓说2018: https://ptpb.pw/~dobbyxs2018

一席: https://ptpb.pw/~dobbyyixi

观复嘟嘟: https://ptpb.pw/~dobbygfdd

绝密档案: https://ptpb.pw/~dobbyjmda

大锤说史: https://ptpb.pw/~dobbydcss

科学有故事: https://ptpb.pw/~dobbykxygs

科学史评话: https://ptpb.pw/~dobbykxsph

黑水怪谈: https://ptpb.pw/~dobbyhsgt

黑水档案: https://ptpb.pw/~dobbyhsda

鬼影人间: https://ptpb.pw/~dobbygyrj


5 个回复 | 最后更新于 8 天前
2018-08-22   #1

这个是抓取的python代码,因为使用了第三方库podgen来生成rss,在阿里云的函数计算中,需要将这个库(这个库已经包含了requests)打包上传,阿里云函数计算打包第三方依赖库并上传的教程

https://help.aliyun.com/document_detail/56316.html?spm=a2c4g.11186623.2.4.15c664ed3Ry1P7#using-modules


# -*- coding: utf-8 -*-
import requests
import json
import logging
from podgen import Podcast, Episode, Media

CONFIG = {
    '15273276': '16e9a5ae-cde3-406a-a78e-xxxxxx',  # 晓说2018
    '242812': 'fd942955-8c8a-41a4-b4da-xxxxxx',  # 一席
    '3475911': '9c29726d-ce5d-4af8-a34f-xxxxxx',    #观复嘟嘟
    '15338996': '597b4bcf-4f01-43da-acaa-xxxxxx',  # 绝密档案
    '8291530': 'b5b864e3-a61f-43e6-b764-xxxxxx',  # 大锤说史
    '4156778': '59852943-34da-4900-91e6-xxxxxx',    #科学有故事
    '5411224': 'dfa75719-f444-4ff6-901c-xxxxxx'    #科学史评话
}


def ximalaya_rss(albumid, uuid):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 '
                      'Safari/537.36',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
        'Accept-Encoding': 'gzip',
        'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,ja;q=0.7',
        'Connection': 'keep-alive',
        'Referer': 'http://www.ximalaya.com',
        'Pragma': 'no-cache',
        'Cache-Control': 'no-cache',
        'Upgrade-Insecure-Requests': '1',
        'DNT': '1'
    }
    url = 'http://mobile.ximalaya.com/mobile/playlist/album?albumId={albumid}'.format(albumid=albumid)
    resp = requests.get(url, headers=headers)
    album_info = resp.json()
    p = Podcast(
        name=album_info['albumTitle'],
        description="rss_for_ximalaya",
        website="http://www.ximalaya.com",
        explicit=False
    )
    podcasts = album_info['data']

    for rss_node in podcasts:
        try:
            p.episodes += [
                Episode(title=rss_node['title'],
                        media=Media(rss_node['playPathAacv224'], int(rss_node['duration'])),
                        summary=rss_node['title'])
            ]
        except Exception:
            p.episodes += [
                Episode(title=rss_node['title'],
                        media=Media(rss_node['playUrl64'], int(rss_node['duration'])),
                        summary=rss_node['title'])
            ]
    rss = json.dumps({'content': str(p)}).encode('utf-8')
    headers = {'Content-Type': 'application/json',
               'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}
    resp = requests.put('https://ptpb.pw/{key}'.format(key=uuid), data=rss, headers=headers)
    return resp.content.decode('utf-8')

def my_handler(event, context):
    for item in CONFIG.items():
        result = ximalaya_rss(item[0],item[1])
        logger = logging.getLogger()
        logger.info(result)
    return result
2018-08-22   #2

赞!

2018-08-30   #3

安利一下rsshub

docs.rsshub.app

专辑(支持泛用型播客订阅) By @lengthmin @jjeejj

注意

付费内容可获取更新但无法收听

目前支持泛用型播客订阅的输出格式中标明的格式只有 rss 支持,也就是说你只能使用以下链接来订阅播客:

  • https://rsshub.app/ximalaya/album/299146/

  • https://rsshub.app/ximalaya/album/299146.rss

举例: https://rsshub.app/ximalaya/album/299146/

路由: /ximalaya/album/:id

参数:

id, 专辑 id, 可在对应专辑页面的 URL 中找到

提示

专辑 id 是跟在分类拼音后的那个 id, 不要输成某集的 id 了


2018-09-04   #4

回复#3 @lengthmin :

这个rsshub好久之前就关注了,但是一直没想到用来做播客订阅,十分的感谢

8 天前   #5

你这几个貌似都不用抓

登录后方可回帖

Loading...