lazysdk 0.1.3__py3-none-any.whl → 0.1.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
lazysdk/lazym3u8.py CHANGED
@@ -5,6 +5,7 @@ from . import lazytime
5
5
  from . import lazyfile
6
6
  from . import lazypath
7
7
  from . import lazymd5
8
+ from . import lazyprocess
8
9
  import subprocess
9
10
  import threading
10
11
  import requests
@@ -503,6 +504,105 @@ def download_fragment(
503
504
  return download_res
504
505
 
505
506
 
507
+ def download_fragment_single(
508
+ task_index,
509
+ task_info,
510
+ ):
511
+ """
512
+ 模块功能:下载单个碎片到指定文件夹
513
+ :param fragment_url: 碎片下载地址
514
+ :param fragment_url_name: 碎片名
515
+ :param fragment_path:碎片保存路径
516
+ :param aes_key: aes解密key
517
+ :param headers:请求头
518
+ :param fragment_suffix:碎片文件后缀名
519
+ :return:
520
+ """
521
+ fragment_url = task_info['fragment_url']
522
+ fragment_url_name = task_info['fragment_url_name']
523
+ fragment_path = task_info['fragment_path']
524
+ aes_key = None,
525
+ headers = None,
526
+ fragment_suffix = task_info['fragment_suffix']
527
+
528
+ if headers is None:
529
+ headers_local = default_headers
530
+ else:
531
+ headers_local = headers
532
+
533
+ print('正在下载', fragment_url_name, fragment_url)
534
+ fragment_file_name = '%s%s%s.%s' % (fragment_path, path_separator, fragment_url_name, fragment_suffix) # 生成碎片文件名
535
+ # 开始下载碎片文件
536
+ while True:
537
+ try:
538
+ with open(fragment_file_name, "ab+") as f:
539
+ response = requests.get(
540
+ url=fragment_url,
541
+ headers=headers_local,
542
+ stream=True,
543
+ timeout=timeout
544
+ )
545
+ total_length = response.headers.get('content-length')
546
+
547
+ if total_length is None:
548
+ print("Attention: There is no content length in header!") # 未返回长度信息
549
+ else:
550
+ dl = 0
551
+ total_length = int(total_length)
552
+ for data in track(
553
+ sequence=response.iter_content(chunk_size=8192),
554
+ description='下载中',
555
+ total=total_length/8192,
556
+ show_speed=True
557
+ ):
558
+ dl += len(data)
559
+ if aes_key is None:
560
+ data_decode = data
561
+ else:
562
+ data_decode = lazyCrypto.aes_decode(data, aes_key)
563
+ f.write(data_decode)
564
+ f.flush()
565
+ break
566
+ except:
567
+ showlog.warning('下载超时,将在1秒后重试...')
568
+ os.remove(fragment_file_name)
569
+ time.sleep(1)
570
+ pass
571
+
572
+
573
+ def download_fragment_quick(
574
+ url_list,
575
+ subprocess_limit=None
576
+ ):
577
+ fragment_path = 'fragment_%s' % str(time.time()).replace('.', '') # 使用时间戳命名
578
+ fragment_suffix = 'ts'
579
+ lazypath.make_path(fragment_path)
580
+ task_list = list()
581
+ fragment_file_name_list = list()
582
+ for url_index, each_url in enumerate(url_list):
583
+ task_list.append(
584
+ {
585
+ 'fragment_url': each_url,
586
+ 'fragment_url_name': url_index,
587
+ 'fragment_path': fragment_path,
588
+ 'fragment_suffix': fragment_suffix
589
+ }
590
+ )
591
+ fragment_file_name = '%s%s%s.%s' % (fragment_path, path_separator, url_index, fragment_suffix) # 生成碎片文件名
592
+ fragment_file_name_list.append(fragment_file_name)
593
+ lazyprocess.run(
594
+ task_list=task_list,
595
+ task_function=download_fragment_single,
596
+ subprocess_limit=subprocess_limit
597
+ )
598
+ download_res = {
599
+ 'fragment_path': fragment_path,
600
+ 'fragment_suffix': fragment_suffix,
601
+ 'fragment_file_name_list': fragment_file_name_list
602
+ }
603
+ return download_res
604
+
605
+
506
606
  def download_m3u8(
507
607
  m3u8_link=None,
508
608
  m3u8_file_path=None,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lazysdk
3
- Version: 0.1.3
3
+ Version: 0.1.5
4
4
  Summary: 基于Python的懒人包
5
5
  Home-page: https://gitee.com/ZeroSeeker/lazysdk
6
6
  Author: ZeroSeeker
@@ -8,7 +8,7 @@ lazysdk/lazyfile.py,sha256=Rdj9f11IUyd1lLAZu-G4JHZqSKrvBQGkLCeJ9CxSzPQ,20267
8
8
  lazysdk/lazyflask.py,sha256=VUhJqtNz_evVyGOS40FKkkQWWrqGEUZ26cv1RQxS388,727
9
9
  lazysdk/lazyid.py,sha256=pEmRpN78-6vdz4hzLxgoCSHJw6gvnOVQyNjqusZZLQE,607
10
10
  lazysdk/lazyip.py,sha256=ZM4N0nCimW4r4z1_Bymb-ZAfabR_3L-hB5Biyyz77-I,451
11
- lazysdk/lazym3u8.py,sha256=8lBBzIl_LajvmOuKvbp17nT2XItHDzHDfhVSd4K1mQs,28027
11
+ lazysdk/lazym3u8.py,sha256=PyBOpgFlkKNQqi9MyVcueBjEdqDKaSkvUBG5ggvdT3k,31559
12
12
  lazysdk/lazymd5.py,sha256=JSKIcUmH2zwPDDJAd9XajTYd59eKidoKAkLLNU8OHM4,1112
13
13
  lazysdk/lazypath.py,sha256=cPjp5kfJcbp6884HgJY0SIUAhQ85qA-o9N-MKhk4uBU,4305
14
14
  lazysdk/lazyprocess.py,sha256=ifRnQmQMwhP8wmy0HF6_sYZ747XlQ7esp0jiS2JnOPk,5079
@@ -20,7 +20,7 @@ lazysdk/lazytext.py,sha256=1f2B0HJVweWVkmCx3NcwXaRw0ZQHYc7PKTv38hdgAGQ,1448
20
20
  lazysdk/lazytime.py,sha256=lOQ5U8iWa9dp1ZJ8SjfZ2FRBj9t43SsteYbxDcXkFzo,23199
21
21
  lazysdk/lazyua.py,sha256=QI4EgZAMF9AqXJJvaDEzsMSTbsR47_y8CkJkfPbX-kM,3783
22
22
  lazysdk/lazywebhook.py,sha256=HwJIZ5j3wUpnEfPkFY-Xq9T_9xdhCJ71dYsWNX22_3Y,8386
23
- lazysdk-0.1.3.dist-info/METADATA,sha256=n8O2bO3ZjwxSLlVRiFF5HlLuFhWk2ufs0stpfZb6EGI,1730
24
- lazysdk-0.1.3.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
25
- lazysdk-0.1.3.dist-info/top_level.txt,sha256=--bGS42ZHUhVeO83y1wfvKFg6OjkTLxQ4V4riqPQljY,8
26
- lazysdk-0.1.3.dist-info/RECORD,,
23
+ lazysdk-0.1.5.dist-info/METADATA,sha256=6khY7vOS649UU4oFmYW5XsCAHvJiS2HHewQIfd0HFnU,1730
24
+ lazysdk-0.1.5.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
25
+ lazysdk-0.1.5.dist-info/top_level.txt,sha256=--bGS42ZHUhVeO83y1wfvKFg6OjkTLxQ4V4riqPQljY,8
26
+ lazysdk-0.1.5.dist-info/RECORD,,