开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 7230|回复: 2
收起左侧

[源码分享] 抖音去水印解析接口源码

[复制链接]
结帖率:100% (4/4)
发表于 2019-8-24 15:29:38 | 显示全部楼层 |阅读模式   安徽省亳州市
本帖最后由 gg132124 于 2019-8-24 15:32 编辑

python3,使用之前先安装依赖flask,requests
学了一下flask写api,照着葫芦画瓢写出来的,
有啥出错的的请大佬指正。




请求URL示例:
  1. http://127.0.0.1:2222/api/douyin/parse?url=http://v.douyin.com/6JqLLM/
复制代码
  1. http://127.0.0.1:2222/api/douyin/parse?id=6683669865368259852
复制代码

源码:

  1. # -*- encoding: utf-8 -*-
  2. '''
  3. @file    :   douyin.py
  4. @Time    :   2019/08/24 10:16:18
  5. @AuThor  :   ermao@52pojie.cn
  6. @version :   1.0
  7. @Desc    :   抖音去水印解析
  8. '''

  9. # start
  10. from flask import Flask, jsonify, request
  11. import requests
  12. import re

  13. app = Flask(__name__)

  14. header = {
  15.     'User-Agent':
  16.     'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Mobile Safari/537.36'
  17. }


  18. @app.route('/api')
  19. def index():
  20.     res = {'Hello': 'API !'}
  21.     return jsonify(res)


  22. @app.errorhandler(404)
  23. def not_found(error):
  24.     return jsonify({'error': 'NOT FOUND'}), 404


  25. @app.route('/api/douyin/parse')
  26. def Video_parsing():
  27.     if 'id' in request.args and len(request.args['id']) == 19:
  28.         res = get_video(request.args['id'])
  29.     elif 'url' in request.args and 'douyin.com' in request.args['url']:
  30.         res = get_id(request.args['url'])
  31.     else:
  32.         res = {'error': 'Invalid Parameter'}
  33.     return jsonify(res)


  34. def get_id(url):
  35.     try:
  36.         r = requests.head(url)
  37.         id = re.findall(r'/video/(\d{19})/', r.headers['Location'])[0]
  38.         res = get_video(id)
  39.         return res
  40.     except Exception:
  41.         return {'error': 'Invalid URL'}


  42. def get_video(id):
  43.     html = requests.get('https://www.iesdouyin.com/share/video/' + id +
  44.                         '/?mid',
  45.                         headers=header).text
  46.     dytk_re = re.findall(r'dytk: "(\w{64})"', html)
  47.     try:
  48.         dtyk = dytk_re[0]
  49.         res_json = requests.get(
  50.             'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=' +
  51.             id + '&dytk=' + dtyk).json()
  52.         temp_url = res_json['item_list'][0]['video']['play_addr']['url_list'][0]
  53.         r = requests.head(temp_url, headers=header)
  54.         real_addr = r.headers['Location']
  55.         if '/video/m/' in real_addr:
  56.             res = {
  57.                 'id': id,
  58.                 'uri': res_json['item_list'][0]['video']['vid'],
  59.                 'desc': res_json['item_list'][0]['desc'],
  60.                 'pic': res_json['item_list'][0]['video']['origin_cover']['url_list'][0],
  61.                 'gif': res_json['item_list'][0]['video']['dynamic_cover']['url_list'][0],
  62.                 'play_addr': real_addr
  63.             }
  64.             return res
  65.     except Exception:
  66.         return {'error': 'An exception occurred'}


  67. if __name__ == "__main__":
  68.     app.run(host='0.0.0.0', port=2222)
复制代码


发表于 2019-9-29 15:30:25 | 显示全部楼层   福建省泉州市
回复 支持 反对

使用道具 举报

结帖率:35% (6/17)

签到天数: 1 天

发表于 2019-8-24 15:31:35 | 显示全部楼层   天津市天津市
666666666666666
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表