Coder Social home page Coder Social logo

dlimiter's People

Contributors

accors avatar ddsderek avatar ddsrem avatar somethingwjy avatar steve0x2a avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

dlimiter's Issues

功能移植

能把nastools的自动限速功能移植过来么
40BAD69A-3FEF-4890-BFAB-353F6F61AA65

Jellyfin的判断逻辑有误,导致播放永远被识别为外网

错误位置:
https://github.com/Steve0x2a/DLimiter/blob/main/utils/limiter.py#L69

">=" 应改为 ">"

eg:

若内网客户端播放,则返回值count=0,依然会触发 downloader.set_speed_limit 导致限速。

config配置:

[limiter]
# 部分外网访问是使用端口转发来实现的,需要排除特定的ip
exclude_ip = ["192.168.0.165","10.8.0.0/24"]

使用两个ip进行测试
IP_1: 192.168.0.160
IP_2: 192.168.0.165(exclude_ip)

IP_1: 192.168.0.160 日志如下
https://github.com/Steve0x2a/DLimiter/blob/main/utils/player/jellyfin.py#L34 (IF语句未进入,会话数:0,不应该限速)

2023-03-05 17:50:46 - DLimiter - INFO - 35 当前Jellyfin外网播放会话数:0
2023-03-05 17:50:46 - DLimiter - INFO - 73 监测到jellyfin外网()播放,触发限速,下载器 media 限速为 3000K/s 下载,600K/s 上传

IP_2: 192.168.0.165 日志如下

2023-03-05 17:56:57 - DLimiter - INFO - 34 监测到Jellinfin外网用户wjy(192.168.0.165)正在播放
2023-03-05 17:56:57 - DLimiter - INFO - 35 当前Jellyfin外网播放会话数:1
2023-03-05 17:56:58 - DLimiter - INFO - 73 监测到jellyfin外网()播放,触发限速,下载器 media 限速为 3000K/s 下载,600K/s 上传

解析plex的webhook失败

2023-02-07 13:59:51 - DLimiter - ERROR - 20 解析Plex webhooks错误:'Session',context:{'payload': ['{"event":"media.resume","user":true,"owner":true,"Account":{"id":185190476,"thumb":"https://plex.tv/users/65e6b75c55973fa7/avatar?c=1674766970","title":"samir2013dzh"},"Server":{"title":"AlexStation","uuid":"582eb5245bc0916d672bd5b0c9739f3bb89a25e0"},"Player":{"local":false,"publicAddress":"10.7.7.7","title":"BigAlex","uuid":"u4nb8m1l0pag9jzz2h83ki1r"},"Metadata":{"librarySectionType":"show","ratingKey":"3060","key":"/library/metadata/3060","parentRatingKey":"3057","grandparentRatingKey":"3056","guid":"plex://episode/633eed8f5ca1ba323833a737","parentGuid":"plex://season/60300df481821b002c1b07ab","grandparentGuid":"plex://show/60300df381821b002c1b07a8","type":"episode","title":"火速增员","grandparentKey":"/library/metadata/3056","parentKey":"/library/metadata/3057","librarySectionTitle":"动漫","librarySectionID":3,"librarySectionKey":"/library/sections/3","grandparentTitle":"孤独摇滚!","parentTitle":"Season 1","originalTitle":"Bocchi the Rock!","contentRating":"TV-14","summary":"预想中的“经过打工沟通能力急速成长”并没有实现,一里依然无法和同学自然地交谈,这一天也是在学校独自吃午饭。想起当时虹夏为了找新成员向自己搭话的样子,她决定向听说能弹吉他又受欢迎的阳光女生喜多伸出橄榄枝,然而......","index":3,"parentIndex":1,"audienceRating":8.0,"viewOffset":367000,"lastViewedAt":1675749337,"year":2022,"thumb":"/library/metadata/3060/thumb/1670273392","art":"/library/metadata/3056/art/1672087301","parentThumb":"/library/metadata/3057/thumb/1669185450","grandparentThumb":"/library/metadata/3056/thumb/1672087301","grandparentArt":"/library/metadata/3056/art/1672087301","duration":1440000,"originallyAvailableAt":"2022-10-23","addedAt":1669038936,"updatedAt":1670273392,"audienceRatingImage":"themoviedb://image.rating","Director":[{"id":11007,"filter":"director=11007","tag":"Yuusuke Yamamoto"}],"Writer":[{"id":10997,"filter":"writer=10997","tag":"Erika Yoshida"}],"Producer":[{"id":11008,"filter":"producer=11008","tag":"Sho Someno"}],"Guid":[{"id":"imdb://tt22797994"},{"id":"tmdb://3989994"},{"id":"tvdb://9390696"}],"Rating":[{"image":"themoviedb://image.rating","value":8.0,"type":"audience"}],"Role":[{"id":7246,"filter":"actor=7246","tag":"Maaya Uchida","tagKey":"5d776a4296b655001fde8a47","role":"Seika Ijichi (voice)","thumb":"https://metadata-static.plex.tv/e/people/ecc9a4fda200da37b6dea6371b21416e.jpg"},{"id":8200,"filter":"actor=8200","tag":"Misaki Watada","tagKey":"5d9c07fa02391c001f57dad6","role":"Futari Gotoh (voice)","thumb":"https://metadata-static.plex.tv/people/5d9c07fa02391c001f57dad6.jpg"},{"id":10982,"filter":"actor=10982","tag":"Hinaki Yano","tagKey":"5f5d60d98edf4c0042ac05a9","role":"Kita\'s Friend (voice)","thumb":"https://metadata-static.plex.tv/a/people/acfa85d0b910ced52bf0c937da61cf74.jpg"},{"id":10983,"filter":"actor=10983","tag":"Yume Miyamoto","tagKey":"6325c9fd31a6256f7eca208e","role":"Kita\'s Friend (voice)","thumb":"https://metadata-static.plex.tv/6/people/6d3f12f341ab7aed6bab734745e20076.jpg"},{"id":7502,"filter":"actor=7502","tag":"Natsumi Kawaida","tagKey":"5f406af402101b0040fde974","role":"Student (voice)","thumb":"https://metadata-static.plex.tv/3/people/3508de5926c805f5bb0974b6edc7897a.jpg"},{"id":10702,"filter":"actor=10702","tag":"Megumi Yamaguchi","tagKey":"5d9f35236fc551001ef808e6","role":"Student (voice)","thumb":"https://metadata-static.plex.tv/7/people/757cd17bb68129e87f024b280f585828.jpg"},{"id":7496,"filter":"actor=7496","tag":"Yohei Azakami","tagKey":"5f4030f703883a0040b50b88","role":"Student (voice)","thumb":"https://metadata-static.plex.tv/c/people/c7b91df98b2cf039e9ccb27f25f69a18.jpg"},{"id":7777,"filter":"actor=7777","tag":"Kotori Koiwai","tagKey":"5d776d4aad5437001f7d2451","role":"PA-san / Jimihen (voice)","thumb":"https://metadata-static.plex.tv/5/people/5d5773dd3d50b778e23a12bb6162e9c5.jpg"}]}}']} 2023-02-07 13:59:51 - DLimiter - ERROR - 104 Event not successful 2023-02-07 14:00:26 - DLimiter - ERROR - 20 解析Plex webhooks错误:'Session',context:{'payload': ['{"event":"media.pause","user":true,"owner":true,"Account":{"id":185190476,"thumb":"https://plex.tv/users/65e6b75c55973fa7/avatar?c=1674766970","title":"samir2013dzh"},"Server":{"title":"AlexStation","uuid":"582eb5245bc0916d672bd5b0c9739f3bb89a25e0"},"Player":{"local":false,"publicAddress":"10.7.7.7","title":"BigAlex","uuid":"u4nb8m1l0pag9jzz2h83ki1r"},"Metadata":{"librarySectionType":"show","ratingKey":"3060","key":"/library/metadata/3060","parentRatingKey":"3057","grandparentRatingKey":"3056","guid":"plex://episode/633eed8f5ca1ba323833a737","parentGuid":"plex://season/60300df481821b002c1b07ab","grandparentGuid":"plex://show/60300df381821b002c1b07a8","type":"episode","title":"火速增员","grandparentKey":"/library/metadata/3056","parentKey":"/library/metadata/3057","librarySectionTitle":"动漫","librarySectionID":3,"librarySectionKey":"/library/sections/3","grandparentTitle":"孤独摇滚!","parentTitle":"Season 1","originalTitle":"Bocchi the Rock!","contentRating":"TV-14","summary":"预想中的“经过打工沟通能力急速成长”并没有实现,一里依然无法和同学自然地交谈,这一天也是在学校独自吃午饭。想起当时虹夏为了找新成员向自己搭话的样子,她决定向听说能弹吉他又受欢迎的阳光女生喜多伸出橄榄枝,然而......","index":3,"parentIndex":1,"audienceRating":8.0,"viewOffset":402000,"lastViewedAt":1675749626,"year":2022,"thumb":"/library/metadata/3060/thumb/1670273392","art":"/library/metadata/3056/art/1672087301","parentThumb":"/library/metadata/3057/thumb/1669185450","grandparentThumb":"/library/metadata/3056/thumb/1672087301","grandparentArt":"/library/metadata/3056/art/1672087301","duration":1440000,"originallyAvailableAt":"2022-10-23","addedAt":1669038936,"updatedAt":1670273392,"audienceRatingImage":"themoviedb://image.rating","Director":[{"id":11007,"filter":"director=11007","tag":"Yuusuke Yamamoto"}],"Writer":[{"id":10997,"filter":"writer=10997","tag":"Erika Yoshida"}],"Producer":[{"id":11008,"filter":"producer=11008","tag":"Sho Someno"}],"Guid":[{"id":"imdb://tt22797994"},{"id":"tmdb://3989994"},{"id":"tvdb://9390696"}],"Rating":[{"image":"themoviedb://image.rating","value":8.0,"type":"audience"}],"Role":[{"id":7246,"filter":"actor=7246","tag":"Maaya Uchida","tagKey":"5d776a4296b655001fde8a47","role":"Seika Ijichi (voice)","thumb":"https://metadata-static.plex.tv/e/people/ecc9a4fda200da37b6dea6371b21416e.jpg"},{"id":8200,"filter":"actor=8200","tag":"Misaki Watada","tagKey":"5d9c07fa02391c001f57dad6","role":"Futari Gotoh (voice)","thumb":"https://metadata-static.plex.tv/people/5d9c07fa02391c001f57dad6.jpg"},{"id":10982,"filter":"actor=10982","tag":"Hinaki Yano","tagKey":"5f5d60d98edf4c0042ac05a9","role":"Kita\'s Friend (voice)","thumb":"https://metadata-static.plex.tv/a/people/acfa85d0b910ced52bf0c937da61cf74.jpg"},{"id":10983,"filter":"actor=10983","tag":"Yume Miyamoto","tagKey":"6325c9fd31a6256f7eca208e","role":"Kita\'s Friend (voice)","thumb":"https://metadata-static.plex.tv/6/people/6d3f12f341ab7aed6bab734745e20076.jpg"},{"id":7502,"filter":"actor=7502","tag":"Natsumi Kawaida","tagKey":"5f406af402101b0040fde974","role":"Student (voice)","thumb":"https://metadata-static.plex.tv/3/people/3508de5926c805f5bb0974b6edc7897a.jpg"},{"id":10702,"filter":"actor=10702","tag":"Megumi Yamaguchi","tagKey":"5d9f35236fc551001ef808e6","role":"Student (voice)","thumb":"https://metadata-static.plex.tv/7/people/757cd17bb68129e87f024b280f585828.jpg"},{"id":7496,"filter":"actor=7496","tag":"Yohei Azakami","tagKey":"5f4030f703883a0040b50b88","role":"Student (voice)","thumb":"https://metadata-static.plex.tv/c/people/c7b91df98b2cf039e9ccb27f25f69a18.jpg"},{"id":7777,"filter":"actor=7777","tag":"Kotori Koiwai","tagKey":"5d776d4aad5437001f7d2451","role":"PA-san / Jimihen (voice)","thumb":"https://metadata-static.plex.tv/5/people/5d5773dd3d50b778e23a12bb6162e9c5.jpg"}]}}']} 2023-02-07 14:00:26 - DLimiter - ERROR - 104 Event not successful

不能判定内网ip播放

nt限速插件始终不起作用,MP安装起来也比较麻烦,好在找到了这个docker,感谢!不过目前遇到了不能辨别内网ip的情况。部署情况:路由器安装了lucky做反向代理,这样外网播放地址是https://emby.xxx.com:88。群辉ip是192.168.50.4,安装docker之后,下载器和emby都能正常添加,exclude_ip这里描述得比较模糊,我添加的是exclude_ip = ["192.168.50.1","192.168.50.0/24"]。目的是为了规避整个内网网段。
但是看日志之后,发现它把内网的电视192.168.50.20也视为外网,甚至直接把192.168.50.20添加到exclude_ip也不起作用

程序总是运行一段时间后就报错然后自动关闭

File "/usr/local/lib/python3.10/http/client.py", line 1282, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.10/http/client.py", line 1328, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.10/http/client.py", line 1277, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.10/http/client.py", line 1037, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.10/http/client.py", line 975, in send
    self.connect()
  File "/usr/local/lib/python3.10/site-packages/urllib3/connection.py", line 205, in connect
    conn = self._new_conn()
  File "/usr/local/lib/python3.10/site-packages/urllib3/connection.py", line 186, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x14b85e1b6830>: Failed to establish a new connection: [Errno 113] Host is unreachable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 787, in urlopen
    retries = retries.increment(
  File "/usr/local/lib/python3.10/site-packages/urllib3/util/retry.py", line 592, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='192.168.50.105', port=9091): Max retries exceeded with url: /transmission/rpc (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x14b85e1b6830>: Failed to establish a new connection: [Errno 113] Host is unreachable'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/transmission_rpc/client.py", line 166, in _http_query
    r = self._http_session.post(
  File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 590, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.50.105', port=9091): Max retries exceeded with url: /transmission/rpc (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x14b85e1b6830>: Failed to establish a new connection: [Errno 113] Host is unreachable'))

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/bin/hypercorn", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.10/site-packages/hypercorn/__main__.py", line 287, in main
    run(config)
  File "/usr/local/lib/python3.10/site-packages/hypercorn/run.py", line 41, in run
    load_application(config.application_path, config.wsgi_max_body_size)
  File "/usr/local/lib/python3.10/site-packages/hypercorn/utils.py", line 115, in load_application
    module = import_module(import_name)
  File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/app/main.py", line 2, in <module>
    from routes import bp_player
  File "/app/routes/__init__.py", line 2, in <module>
    from routes.emby import bp_emby
  File "/app/routes/emby.py", line 3, in <module>
    from utils.limiter import emby_apply_limit
  File "/app/utils/limiter.py", line 5, in <module>
    from utils.player.plex import parse_plex_webhooks, get_plex_playing_session_count
  File "/app/utils/player/plex.py", line 5, in <module>
    from client.player.plex import plex_client
  File "/app/client/player/plex/__init__.py", line 5, in <module>
    config = Config()
  File "/app/conf/__init__.py", line 20, in _singleconfig
    config = cls(*args, **kwargs)
  File "/app/conf/__init__.py", line 31, in __init__
    self.parse_downloaders()
  File "/app/conf/__init__.py", line 52, in parse_downloaders
    downloader = Transmission(name=dl_name,
  File "/app/client/downloader/transmission.py", line 24, in __init__
    self.client = transmission_rpc.Client(host=host,
  File "/usr/local/lib/python3.10/site-packages/transmission_rpc/client.py", line 108, in __init__
    self.get_session()
  File "/usr/local/lib/python3.10/site-packages/transmission_rpc/client.py", line 778, in get_session
    self._request(RpcMethod.SessionGet, timeout=timeout)
  File "/usr/local/lib/python3.10/site-packages/transmission_rpc/client.py", line 213, in _request
    http_data = self._http_query(query, timeout)
  File "/usr/local/lib/python3.10/site-packages/transmission_rpc/client.py", line 175, in _http_query
    raise TransmissionConnectError(f"can't connect to transmission daemon: {str(e)}") from e
transmission_rpc.error.TransmissionConnectError: can't connect to transmission daemon: HTTPConnectionPool(host='192.168.50.105', port=9091): Max retries exceeded with url: /transmission/rpc (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x14b85e1b6830>: Failed to establish a new connection: [Errno 113] Host is unreachable'))

上面是程序日志里面的报错

建议

大佬,能做个判定么,根据emby播放数量多少,分别限速多少。
比如播放一个 限速10m 播放俩个 限速8m 播放三个 限速5m 等等

plex 外网播放识别成本地地址

[limiter]

部分外网访问是使用端口转发来实现的,需要排除特定的ip

exclude_ip = ["192.168.1.1","10.144.1.0/24"]

配置文件已排除192.168.1.1

目前emby可以正常识别,plex 识别位本地地址。

希望不要以local 字段来判断是否,是本地地址,不知道以IP来判断能不能实现

现在plex 日志 是直接跳过
DLimiter - INFO - 111 本地播放事件,跳过

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.