精易论坛

标题: 抖音去水印解析接口源码 [打印本页]

作者: 二毛2021    时间: 2019-8-24 15:29
标题: 抖音去水印解析接口源码
本帖最后由 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  :   [email protected]
  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)
复制代码



作者: ganzibang    时间: 2019-8-24 15:31
666666666666666
作者: 挖个名字这么难    时间: 2019-9-29 15:30





欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4