DMM作品信息查询工具:获取高清、标清月额作品和非月作品信息
这是一个使用 Python 编写的 DMM 作品信息查询工具,可以根据输入的 DMM 作品 CID 查询作品信息,并自动分类为高清月额、标清月额、非月作品和已下架或错误的 CID,方便用户快速获取所需信息。/n/n该工具使用 requests 库获取 DMM 网站页面,使用 BeautifulSoup 库解析网页内容,并使用正则表达式匹配需要的关键信息。/n/n使用方法:/n/n1. 确保已安装 requests、BeautifulSoup 和 re 库。/n2. 运行 Python 脚本。/n3. 在提示输入 CID 的地方,输入要查询的 CID,多个 CID 用空格或逗号分隔。/n/n功能说明:/n/n* 查询作品信息:根据输入的 CID,查询 DMM 网站上的作品信息,包括作品标题、分辨率、码率和文件大小等。/n* 自动分类:根据作品信息,自动将作品分类为高清月额、标清月额、非月作品和已下架或错误的 CID。/n* 输出结果:将查询结果输出到控制台,方便用户查看。/n/n代码示例:/n/npython/nimport re/nimport requests/nfrom bs4 import BeautifulSoup/n/nheaders = {/n 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',/n}/n/ndef get_monthly_product_info(product_id):/n url = 'https://www.dmm.co.jp/monthly/premium/-/detail/=/cid={}/'.format(product_id)/n response = requests.get(url, headers=headers)/n soup = BeautifulSoup(response.text, 'html.parser')/n/n title_tag = soup.find('h1', {'class': 'ttl-sectDetail ttl-product'})/n title = title_tag.text.strip() if title_tag else None/n/n quality_select = soup.find('select', {'id': 'download_bitrate'})/n selected_option = quality_select.find('option', {'selected': True})/n quality = selected_option.text.split('(')[-1].replace(')', '').strip() if selected_option else None/n quality_value = selected_option['value'] if selected_option else None/n/n size_spans = soup.select('#download_filesize > span')/n sizes = {}/n for span in size_spans:/n size_text = span.text.strip()/n if '容量(目安)' in size_text:/n size_value = int(size_text.split(':')[-1].replace('MB', ''))/n sizes[size_value] = span/n max_size = max(sizes.keys())/n max_size_tag = sizes[max_size]/n/n return {/n 'title': title,/n 'quality': quality,/n 'quality_value': quality_value,/n 'size': max_size_tag.text.strip()/n }/n/ndef format_product_id(product_id):/n if '-' in product_id:/n product_id = product_id.replace('-', '00')/n return product_id/n/ncid_str = input('请输入要查询的cid, 多个CID用空格或逗号分隔:')/ncids = [format_product_id(cid.strip()) for cid in cid_str.replace(',', ' ').split()]/n/nhigh_definition_cids = []/nstandard_definition_cids = []/ncid_list = []/ndown_cid_list = []/n/nfor cid in cids:/n # 月额作品/n search_url = 'https://www.dmm.co.jp/monthly/-/list/search/=/?searchstr={}'.format(cid)/n response = requests.get(search_url, headers=headers)/n soup = BeautifulSoup(response.text, 'html.parser')/n/n link_tags = soup.find_all('a', href=re.compile(r'https://www/.dmm/.co/.jp/monthly/premium/-/detail/=/cid=/w+'))/n/n if not link_tags:/n # 非月额作品/n search_url = 'https://www.dmm.co.jp/search/=/searchstr={}'.format(cid)/n response = requests.get(search_url, headers=headers)/n soup = BeautifulSoup(response.text, 'html.parser')/n/n link_tags = soup.find_all('a', href=re.compile(r'https://www/.dmm/.co/.jp/digital/videoa/-/detail/=/cid=/w+'))/n/n if not link_tags:/n # 没有找到作品, 则跳过该cid的查询/n down_cid_list.append(cid)/n continue/n/n link = link_tags[0]['href'].split('?')[0]/n product_id_match = re.search(r'cid=([/w/d]+)', link)/n product_id = product_id_match.group(1)/n /n # 如果cid存在于非月作品中,不要对cid进行任何操作/n if link.startswith('https://www.dmm.co.jp/digital/videoa/'):/n cid_list.append(cid)/n else:/n product_info = get_monthly_product_info(product_id)/n print(f'{product_id} {product_info['title']}')/n print(f'分辨率:{product_info['quality']}, 码率:{product_info['quality_value']}, {product_info['size']}/n') /n if product_info['quality_value'] and int(product_info['quality_value']) > 3000:/n high_definition_cids.append(product_id)/n else:/n standard_definition_cids.append(product_id)/n/nhigh_definition_count = len(high_definition_cids)/nstandard_definition_count = len(standard_definition_cids)/n/nif high_definition_count > 0:/n print(f'高清月额({high_definition_count}):{'/'|'.join(high_definition_cids)}/n')/nif standard_definition_count > 0:/n print(f'标清月额({standard_definition_count}):{'/'|'.join(standard_definition_cids)}/n')/n/ncid_str = '|' .join(cid_list)/nif cid_str:/n print(f'非月作品({len(cid_list)}):{cid_str}/n')/n/ndown_cid_str = '|' .join(down_cid_list)/nif down_cid_str:/n print(f'已下架或错误cid({len(down_cid_list)}):{down_cid_str}')/n/n/n注意事项:/n/n* 该工具仅供学习和研究使用,请勿用于任何违法行为。/n* DMM 网站可能会更改页面结构,导致该工具失效。/n* 使用该工具前请仔细阅读 DMM 网站的用户协议。/n/n其他:/n/n* 该工具可以根据实际需要进行修改和扩展。/n* 欢迎提出建议和反馈。/n
原文地址: https://www.cveoy.top/t/topic/nH6j 著作权归作者所有。请勿转载和采集!