首页
关于
Search
1
git lg彩色显示日志
24 阅读
2
在 Ubuntu 22.04 LTS 中安装 Docker
19 阅读
3
CentOs/Ubuntu搭建上网x-ui
18 阅读
4
git使用多个源和多个分支
15 阅读
5
git保存账号密码
14 阅读
默认分类
网站搭建
Windows
Linux
Docker
OpenWrt
Hackintosh
Git
Python
Pandas
Web开发
JavaScript
FFmpeg
Demo
工具
刷机
油猴脚本
Excel
Chrome Extension
登录
Search
标签搜索
Pandas
读取
时区
Chrome
centos8
求和
Nginx
Typecho
404
csv
国际站
询盘导出
油猴脚本
bbr
Ubuntu
远程桌面
日志
log
数据清洗
打印机
野生程序猿
累计撰写
151
篇文章
累计收到
0
条评论
首页
栏目
默认分类
网站搭建
Windows
Linux
Docker
OpenWrt
Hackintosh
Git
Python
Pandas
Web开发
JavaScript
FFmpeg
Demo
工具
刷机
油猴脚本
Excel
Chrome Extension
页面
关于
搜索到
35
篇与
的结果
2022-07-15
Python输出日志logging
代码1:在控制台输出log日志import logging logging.basicConfig(level=logging.WARNING, format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') # 开始使用log功能 logging.info('这是 loggging info message') logging.debug('这是 loggging debug message') logging.warning('这是 loggging a warning message') logging.error('这是 an loggging error message') logging.critical('这是 loggging critical message')代码2:在文件中写入log日志import logging logging.basicConfig(level=logging.WARNING, filename='./log.txt', filemode='w', format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') # use logging logging.info('这是 loggging info message') logging.debug('这是 loggging debug message') logging.warning('这是 loggging a warning message') logging.error('这是 an loggging error message') logging.critical('这是 loggging critical message')代码3:在控制台和文件中分别输出log日志import logging # 第一步,创建一个logger logger = logging.getLogger() logger.setLevel(logging.INFO) # Log等级总开关 此时是INFO # 第二步,创建一个handler,用于写入日志文件 logfile = './log.txt' fh = logging.FileHandler(logfile, mode='a') # open的打开模式这里可以进行参考 fh.setLevel(logging.DEBUG) # 输出到file的log等级的开关 # 第三步,再创建一个handler,用于输出到控制台 ch = logging.StreamHandler() ch.setLevel(logging.WARNING) # 输出到console的log等级的开关 # 第四步,定义handler的输出格式(时间,文件,行数,错误级别,错误提示) formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s") fh.setFormatter(formatter) ch.setFormatter(formatter) # 第五步,将logger添加到handler里面 logger.addHandler(fh) logger.addHandler(ch) # 日志级别 logger.debug('这是 logger debug message') logger.info('这是 logger info message') logger.warning('这是 logger warning message') logger.error('这是 logger error message') logger.critical('这是 logger critical message') # # DEBUG:详细的信息,通常只出现在诊断问题上 # INFO:确认一切按预期运行 # WARNING(默认):一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作。 # ERROR:更严重的问题,软件没能执行一些功能 # CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行代码4:log文件大小设置配置文件大小及数量,比如:“设置写入文件,如果文件超过1M大小时,切割日志文件,仅保留3个文件”若文件大小超过1M大小时,就切割日志文件,仅保留3个文件,并且文件的格式为app.log1、app.log2...from logging.handlers import RotatingFileHandler logger_handler = RotatingFileHandler(filename=log_path, maxBytes=1 * 1024 * 1024, backupCount=3, encoding='utf-8')
2022年07月15日
1 阅读
0 评论
0 点赞
2022-07-11
阿里巴巴国际站产品辅助脚本
// ==UserScript== // @name 阿里巴巴国际站产品辅助脚本 // @namespace http://www.alibaba.com // @author Lepturus // @version 0.0.9 // @icon http://is.alicdn.com/favicon.ico // @description 1. 添加【零效果产品页】【产品运营工作台页】【产品分析页】编辑及数据效果查看按钮 2. 添加【产品详情页】编辑及数据查看按钮,修改图片链接为原图,添加显示产品关键词,添加视频链接与封面链接 3. 添加【图片银行页】直接下载原图按钮 4. 添加【关键词指数页】搜索按钮 5. 添加【产品关键词搜索页】显示公司名按钮 6.添加【产品列表页】序列和效果按钮 7. 显示阿里巴巴标签页名称 8. 【产品编辑页】增强 // @match *://www.alibaba.com/* // @match *://data.alibaba.com/* // @match *://*.alibaba.com/trade/search* // @match *://*.alibaba.com/product-detail/* // @match *://keywordIndex.alibaba.com/* // @match *://photobank.alibaba.com/* // @match *://post.alibaba.com/* // @match *://hz-productposting.alibaba.com/* // @match *.alibaba.com/product/* // @grant GM_addStyle // @license MIT // ==/UserScript== ////********************************************** //// 1. 添加【产品运营工作台页】产品编辑及查看产品效果按钮 //// 2. 添加【产品分析页】含【零效果产品页】页 编辑及查看产品分层按钮 //// 3. 添加【产品详情页】编辑查看产品效果按钮,修改图片链接为原图,添加显示产品关键词(点击关键词可复制),添加视频链接与封面链接 //// 4. 添加【图片银行页】直接下载原图按钮 //// 5. 添加【关键词指数页】内 【关键词分析】搜索按钮 //// 6. 添加【产品关键词搜索页】显示公司名按钮,若出现供应商名称顺序对不上的情况,一般重新刷新页面可正确显示,或者重新刷新页面后使用强制显示供应商名称模式(注意先开启该按钮再开启左边ON/OFF按钮) //// 7. 添加【产品列表页】序列(点击可复制询盘链接)和产品效果按钮 //// 8. 显示阿里巴巴标签页名称 //// 9. 【产品编辑页】增强, 添加关键词直接搜索按钮,添加导航快捷按钮(上传图片 质量分检测【当阿里质量分按钮不存在时也可检测】 提交产品),辅助添加标题单词首字母转大写功能 ////********************************************** (function () { 'use strict'; GM_addStyle( ".switch{position:relative;width:45px;height:17px;display:inline-block} .switch input{display:none}.d_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ca2222;transition:.4s}.d_slider:before{position:absolute;content:'';height:13px;width:13px;left:2px;bottom:2px;background-color:#fff;transition:.4s}input:checked+.d_slider{background-color:#2ab934}input:checked+.d_slider:before{transform:translateX(28px)}.on{display:none}.off,.on{color:#fff;position:absolute;transform:translate(-50%,-50%);top:50%;left:50%;font-size:8px}input:checked+.d_slider .on{display:block} input:checked+.d_slider .off{display:none}.d_slider.round{border-radius:17px}.d_slider.round:before{border-radius:50%}" ); // 工具函数 -- 添加元素属性 function setAttributes(el, attrs) { for (let key in attrs) { el.setAttribute(key, attrs[key]); } } // 工具函数 -- 复制 function copy(e, textContent = true) { let obj = document.createElement('input'); document.body.appendChild(obj); obj.value = textContent ? e.textContent : e; obj.select(); document.execCommand('copy', false); obj.remove(); return obj.value } // 工具函数 -- 序数 function addCounter(productList, margin) { var cssText = "position:absolute;z-index:1;margin-left:" + margin + "px;display:inline-block;background:SlateGray;color:WhiteSmoke;font-family:'微软雅黑';font-size:14px;text-align:center;width:20px;line-height:20px;border-radius:50%;"; var div = document.createElement('div'); var idx = 1; for (var i = 0; i < productList.length; i++) { if (productList[i].getAttribute('data-index')) { continue; } else { productList[i].setAttribute('data-index', idx); div.innerHTML = "<div id='product_" + i + "' style=" + cssText + ">" + idx + "</div>"; productList[i].innerHTML = div.innerHTML + productList[i].innerHTML; idx++; } } } // 工具函数 -- 首字母大写 function Capitalize(str) { return str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); }); } function productList() { if (document.querySelector(".product-info")) { addCounter(document.querySelectorAll(".product-info"), -80); } let productList = document.querySelectorAll(".product-info"); for (var i = 0; i < productList.length; i++) { var el = document.getElementsByClassName('product-id')[i]; var el2 = document.getElementById("product_" + i); var product_id = el.innerText.replace(/[^0-9]/ig, ""); let inquiry_url = "https://message.alibaba.com/msgsend/contact.htm?action=contact_action&domain=1&id=" + product_id; var similar_url = "https://post.alibaba.com/product/publish.htm?pubType=similarPost&itemId=" + product_id; el2.onclick = function () { copy(inquiry_url, false) alert(`${inquiry_url}\n……Copy The Inquiry URL Done……`); } el.setAttribute('data-href', inquiry_url) let product_a = productList[i].parentNode.querySelector(".next-col.next-col-3>span>div") if (product_a){ let product_analysis = document.createElement("span"); product_analysis.innerHTML = `<br><a href="https://data.alibaba.com/product/overview?prodId=${product_id}" target="_blank">效果</a>`; if (!product_a.textContent.match("效果")) { // 动态加载fix product_a.appendChild(product_analysis); } } } } // 添加产品运营工作台产品编辑按钮 function productEdit() { let products, products_cell; if (document.querySelector('.upgrade-products-article-item')) { products_cell = '.upgrade-products-article-item'; products = document.querySelectorAll(products_cell); } else { products_cell = '.upgrade-products-grid-record'; products = document.querySelectorAll(products_cell); } let ln = products.length; // 非已经存在编辑按钮 if (ln && !document.querySelector(products_cell).textContent.match("编辑")) { for (let i = 0; i < ln; i++) { let product_title = products[i].querySelector(".product-subject").title; let product_container = products[i].querySelector(".product-id"); let product_id = product_container.textContent.match(/\d+/)[0]; // 产品ID // console.log(product_title, product_id); let product_href = `<a href="//post.alibaba.com/product/publish.htm?spm=a2747.manage.0.0.77fb71d2zK7Jvr&itemId=${product_id}" target="_blank"><br/>编辑</a> <a href="//hz-productposting.alibaba.com/product/manage_products.htm?#/product/all/1-10/productId=${product_id}" target="_blank"> 数据</a> <a href="https://data.alibaba.com/product/overview?prodId=${product_id}" target="_blank">效果明细</a>` if (!product_container.textContent.match("编辑")) { // 动态加载fix product_container.innerHTML += product_href; } } console.log("添加产品运营工作台产品编辑按钮成功!!!"); } } // 添加产品分析页面按钮 function productAnalyse() { let product_tab = document.querySelector(".Product_tab .next-tabs-nav li[aria-selected='true']").textContent let products = document.querySelectorAll('tbody>tr') let ln = products.length; // 非已经存在产品分层按钮 if (product_tab =="我的产品"){ if (ln && !document.querySelector('tbody>tr:last-child').textContent.match("分层")) { for (let i = 0; i < ln; i++) { let product_title = products[i].querySelector(".media-content").textContent; let product_url = products[i].querySelector(".custom-td-content>a").href; let product_id = product_url.match(/_(\d+)\.htm(l)?/)[1]; // 产品ID // console.log(product_title, product_id); let product_newURL = "https://post.alibaba.com/product/publish.htm?spm=a2747.manage.0.0.8e9071d2H60Rr7&pubType=similarPost&itemId=" + product_id + "&behavior=copyNew"; let product_href = `<br><a class="action-enabled TEST" href="${product_newURL}" target="_blank" behavior="copyToNewProduct">复制</a><br> <a class="action-enabled TEST" href="//hz-productposting.alibaba.com/product/manage_products.htm?#/product/all/1-10/productId=${product_id}" target="_blank">分层</a>`; // 非产品不可编辑状态 if (products[i].querySelector(".action-enabled")) { let product_container = products[i].querySelector(".action-enabled").parentElement; // 插入span 编辑 ... if (!product_container.textContent.match("分层")) { // fix动态加载js,指选择日期产品后排序会重复添加的 product_container.innerHTML += product_href; } } // product_container.parentNode.insertBefore(document.createElement("br"), product_container.nextSibling); // document.querySelector('col:last-child').style.setProperty("width", "180px", "important"); // 设置表格最后一栏宽度 } console.log("添加产品分析页面按钮成功!!!"); }} else{ // 零效果产品 // 非对不起,未能查询到符合您要求的产品,建议重新设置查询条件或者已经存在复制按钮 if (!document.querySelector('.ineffective-product tbody>tr').textContent.match("未能查询到") && !document.querySelector('.ineffective-product tbody>tr').textContent .match("复制")) { products = document.querySelectorAll('.ineffective-product tbody>tr') ln = products.length; for (let i = 0; i < ln; i++) { let product_info = products[i].querySelectorAll('.next-table-cell-wrapper'); // 表格每一行产品 // console.log(product_info); let product_url = product_info[1].querySelector("a").href; let product_container = product_info[6].querySelector(".edit-delete-off"); // <span class="edit-delete-off">... let product_id = product_url.match(/_(\d+)\.htm(l)?/)[1]; // http://www.alibaba.com/product-detail//XXX_123456789.html?spm=a2... // 产品ID let product_newURL = "https://post.alibaba.com/product/publish.htm?spm=a2747.manage.0.0.8e9071d2H60Rr7&pubType=similarPost&itemId=" + product_id + "&behavior=copyNew"; let product_HTML = document.createElement("span"); product_HTML.innerHTML = `<a href="${product_newURL}" target="_blank" behavior="copyToNewProduct">复制</a><br/> <a href="//hz-productposting.alibaba.com/product/manage_products.htm?#/product/all/1-10/productId=${product_id}" target="_blank">数据</a><span> </span> <a href="https://data.alibaba.com/product/overview?prodId=${product_id}" target="_blank">效果</a>`; if (!product_container.textContent.match("数据")) { // 动态加载fix product_container.appendChild(product_HTML); } } console.log("零效果产品页复制按钮添加成功!!!"); } } } // 添加产品页按钮 function productDetail() { let product_id; if (!document.querySelector('.ali_product_keywords')) { if (document.querySelector(".module-pdp-title") || document.querySelector(".product-title")) { let product_title; let product_title_container; let product_image_container; if (document.querySelector(".module-pdp-title")){ product_title = document.querySelector(".module-pdp-title").textContent; product_title_container = ".module-pdp-title"; product_image_container = ".main-image-thumb-item img"; } else{ product_title = document.querySelector(".product-title h1").textContent; product_title_container = ".product-title h1"; product_image_container = ".main-list>.main-item>img"; } // 在不同浏览器或设备显示代码不一样 // console.log(product_title); if (/\/product\//.test(document.URL)) { product_id = document.URL.match(/(\d+)-(\d+)/)[1];; // 产品ID } else if (/chinese\.alibaba/.test(document.URL)) { product_id = document.URL.match(/-(\d+)\.htm(l)?/)[1]; // 中文网页产品ID } else { product_id = document.URL.match(/_(\d+)\.htm(l)?/)[1]; // 产品ID } // 产品标题 - Buy () on Alibaba.com let product_keywords = document.title.match(/- Buy (.*) Product/)[1]; // 产品关键词 let product_keywords_html = product_keywords.split(",").map(item => ( `<br/><i class="next-icon next-icon-success next-icon-xs" style="margin-right:5px;"></i><span class="product_keyword">${item}</span>` )).join(""); // overwriting the innerHTML is not a good idea indeed, will gone event listener so using appendChild here. let product_html = document.createElement("div"); product_html.innerHTML = `<p style="color:#ff6a00" class="ali_product_keywords">${product_keywords_html}</p>`; document.querySelector(product_title_container).parentElement.appendChild(product_html); // 同标题class let kws = document.getElementsByClassName("product_keyword"); for (let i = 0; i < kws.length; i++) { kws[i].onclick = function () { let kkws = copy(kws[i]); kws[i].innerHTML = "Copied"; window.setTimeout(function () { kws[i].innerHTML = kkws; }, 1500) } } console.log("添加产品分析页面按钮成功!!!"); document.querySelectorAll(product_image_container).forEach(v => (v.src = v.src.replace( /_50x50\.(jpg|png)/, "").replace(/_100x100xz\.(jpg|png)/, ""))); // 修改图片轮播链接为原图 } } // 动态加载 window.addEventListener('load', function () { if (document.querySelector(".details-user-actions")) { let container = document.querySelector(".details-user-actions"); let product_tool = document.createElement("span"); if (document.querySelector('.image-d_slider video')) { if (!document.querySelector('.details-user-actions').textContent.match("视频")) { let video_link = document.querySelector('video').src; // 产品视频链接 let video_poster = document.querySelector('video').poster; // 产品视频封面链接 let video_html = `<a href="${video_link}" target="_blank">视频链接 </a><a href="${video_poster}" target="_blank">视频封面</a>` product_tool.innerHTML = video_html; } } let product_edit_style = document.querySelector(".is-magic") ? "智能编辑" : document.querySelector( "#J-rich-text-description>div:only-child") ? "旧版智能编辑" : "普通编辑"; product_tool.innerHTML += `<br/>${product_edit_style} <a href="//post.alibaba.com/product/publish.htm?spm=a2747.manage.0.0.77fb71d2zK7Jvr&itemId=${product_id}" target="_blank">编辑</a> <a href="//hz-productposting.alibaba.com/product/manage_products.htm?#/product/all/1-10/productId=${product_id}" target="_blank">数据</a> <a href="https://data.alibaba.com/product/overview?prodId=${product_id}" target="_blank">效果明细</a> <a href="https://post.alibaba.com/product/publish.htm?spm=a2747.manage.0.0.8e9071d2H60Rr7&pubType=similarPost&itemId=${product_id}" target="_blank" behavior="copyToNewProduct">复制</a>`; if (!document.querySelector('.details-user-actions').textContent.match("数据")) { container.appendChild(product_tool); } } }) } // 添加图片银行直接下载原图按钮 function productPhoto() { let products = document.querySelectorAll('.photo-grid-item') // 获取图片容器 let ln = products.length; // 非已存在下载原图链接按钮 if (!document.querySelector('.image-info').textContent.match("下载原图")) { for (let i = 0; i < ln; i++) { let product_src = products[i].querySelector(".photo-grid-img-wrapper img").src; // 获取图片链接 let product_picforamt = product_src.match(/_350x350\.(jpg|png)/)[1]; let product_picLink = product_src.replace(/_350x350\.(jpg|png)/, ""); let product_picName = products[i].querySelector(".display-name button").textContent; // 获取图片文件名 // console.log(product_picName); let product_picContainer = products[i].querySelector(".image-info"); let product_picHTML = document.createElement("a"); setAttributes(product_picHTML, { "href": `${product_picLink}?attachment=${product_picName}.${product_picforamt}`, "target": "_blank", "rel": "noopener noreferrer" }); product_picHTML.innerHTML = "下载原图"; product_picContainer.appendChild(product_picHTML); } // console.log("添加图片银行直接下载原图按钮成功!"); } } //添加关键词指数页搜索按钮 function productKeywordIndex() { let keywords = document.querySelectorAll('.next-table-row'); let ln = keywords.length; // 非已经存在搜索按钮 if (ln && !document.querySelector('.next-table-row a i')) { for (let i = 0; i < ln; i++) { let kws_container = keywords[i].querySelectorAll(".next-table-cell-wrapper")[1].querySelector( "span"); let kw = kws_container.querySelector("a").textContent; let alibaba_link = document.createElement("a"); setAttributes(alibaba_link, { "href": `https://www.alibaba.com/products/${kw}.html?viewtype=G`, "target": "_blank", "rel": "noopener noreferrer", "title": "在阿里巴巴搜索" }); alibaba_link.innerHTML = ` <i class="next-icon next-icon-search next-small next-search-icon"></i>`; let product_link = document.createElement("a"); setAttributes(product_link, { "href": `https://hz-productposting.alibaba.com/product/manage_products.htm?#/product/all/1-10/productKeyword=${kw}`, "target": "_blank", "rel": "noopener noreferrer", "title": "在发布产品列表搜索" }); product_link.innerHTML = ` <i class="next-icon next-icon-search next-small next-search-icon"></i>`; if (!kws_container.querySelector('.next-table-row a i')) { // 动态加载fix kws_container.appendChild(alibaba_link); kws_container.appendChild(product_link); } } console.log("添加关键词指数页搜索按钮成功!!!"); } } // 产品编辑页增强 function productPublish() { let product_keywords; product_keywords = document.querySelectorAll(".posting-field-keywords li"); function alibaba_link(kw) { let kw_search_link = document.createElement("a"); setAttributes(kw_search_link, { "href": `https://www.alibaba.com/products/${kw}.html?viewtype=G`, "target": "_blank", "rel": "noopener noreferrer", "title": "在阿里巴巴搜索", "class": "alibaba_search", }); kw_search_link.innerHTML = `<i class="next-icon next-icon-search next-small next-search-icon"></i>`; return kw_search_link; } for (let i = 0; i < product_keywords.length; i++) { let kw_container = product_keywords[i].querySelector(".next-input-control"); kw_container.appendChild(alibaba_link(product_keywords[i].querySelector("input").value)); product_keywords[i].querySelector("input").addEventListener('change', function (e) { kw_container.replaceChild(alibaba_link(this.value), kw_container.querySelector( '.alibaba_search')); }); } if (document.querySelectorAll("#productsm").length < 1) { let product_menu = document.querySelector('.next-menu-content') product_menu.insertAdjacentHTML('beforeend', '<li id="productpic" tabindex="-1" role="menuitem" class="next-menu-item next-nav-item"><span>上传图片</span></li>' ); document.querySelector('#productpic').onclick = function () { let img_uploadButton = document.getElementsByClassName('upload-select-inner')[0].getElementsByTagName( "button")[0] if (img_uploadButton.disabled) { alert("产品图片已满,请删除部分图片后重新尝试上传!") } else { img_uploadButton.click(); // document.querySelector('#productpic span').style.color = "orange" } } product_menu.insertAdjacentHTML('beforeend', '<li id = "productsc" tabindex="-1" role="menuitem" class="next-menu-item next-nav-item"><span>检测质量分</span></li' ); document.querySelector('#productsc').onclick = function () { let rate = document.getElementById('struct-pinbar').getElementsByClassName('block-text default')[0]; // 产品质量分 if (rate) { rate.click() } else if (document.getElementById('struct-pinbar').getElementsByClassName('block-text')) { document.getElementById('struct-pinbar').getElementsByClassName('block-text')[0].click(); } else { alert("检测出错!") } let product_score = document.getElementById('struct-pinbar').getElementsByClassName('number'); window.setTimeout(function () { if (product_score.length) { document.querySelector('#productsc span').textContent = `检测质量分(${product_score[0].textContent})`; } }, 2500); let product_title = document.getElementById('productTitle').value; let product_titleCapitalize = document.createElement("span"); product_titleCapitalize.className = "product_titleCapitalize"; product_titleCapitalize.innerHTML = `<br>${Capitalize(product_title)}`; let product_title_container = document.getElementById('productTitle').parentNode.parentNode; product_title_container.appendChild(product_titleCapitalize); product_title_container.replaceChild(product_titleCapitalize, product_title_container.querySelector( '.product_titleCapitalize')); product_titleCapitalize.onclick = function () { copy(product_titleCapitalize); product_titleCapitalize.innerHTML = "<br>Copied"; window.setTimeout(function () { product_titleCapitalize.innerHTML = `<br>${Capitalize(product_title)}`; }, 1500); } } product_menu.insertAdjacentHTML('beforeend', '<li id = "productsm" tabindex="-1" role="menuitem" class="next-menu-item next-nav-item"><span>提交产品</span></li' ); document.querySelector('#productsm').onclick = function () { document.getElementsByClassName("next-btn next-btn-primary next-btn-large step-buttons")[0].click(); // 提交按钮 } } } // 搜索关键词显示公司名 function productSupplierDisplay() { let products; if (document.querySelector('.seb-refine-ctb__viewtype>a').classList.contains('active')) { products = document.querySelectorAll('.app-organic-search__list>div.J-offer-wrapper'); } else { products = document.querySelectorAll('.organic-gallery-offer-outter'); } let ln = products.length; function fireMouseEvents(element, eventNames) { if (element && eventNames && eventNames.length) { for (let index in eventNames) { let eventName = eventNames[index]; if (element.fireEvent) { element.fireEvent('on' + eventName); } else { let eventObject = document.createEvent('MouseEvents'); eventObject.initEvent(eventName, true, false); element.dispatchEvent(eventObject); } } } } let supplier_idx = 0 for (let i = 0; i < ln; i++) { let supplier_container; // 视图切换按钮 if (document.querySelector('.seb-refine-ctb__viewtype>a').classList.contains('active')) { supplier_container = products[i].querySelector(".list-no-v2-decisionsup__row"); } else { supplier_container = products[i].querySelector(".organic-gallery-offer_bottom-align-section"); } if (supplier_container && document.getElementById("d_switch").checked) { if (products[i].querySelector('.gallery-theme-card-default__image-ctn') || products[i].querySelector( '.offer-theme-search')) { continue; // 跳过广告位Discover Now } else { supplier_idx = supplier_idx + 1; if (!products[i].querySelector(".alisupplier_name")) { let product_link = products[i].querySelector('a').href; // 获取产品链接 let product_title = products[i].querySelector('.elements-title-normal').textContent; // 获取产品名 // 控制台输出产品标题 测试使用 //console.log(i, product_title); let product_inq, supplier_link, supplier_id = ""; if (document.querySelector('.seb-refine-ctb__viewtype>a').classList.contains('active')) { product_inq = products[i].querySelector('.contact-supplier-btn').href; supplier_link = products[i].querySelector('.list-no-v2-decisionsup__row>span a').href; fireMouseEvents(products[i].querySelector(".list-no-v2-decisionsup__row>span a"), [ 'mouseover', 'mousedown']); // 触发鼠标显示供应商信息 } else { product_inq = products[i].querySelector('.organic-gallery-offer__bottom-v2 a').href; // 获取产品询盘链接 supplier_link = products[i].querySelector(".organic-gallery-offer__seller-company").href; // 获取供应商链接 fireMouseEvents(products[i].querySelector(".organic-gallery-offer__seller-company"), [ 'mouseover', 'mousedown']); // 触发鼠标显示供应商信息 } if (supplier_link.indexOf(".en.alibaba") != -1) { supplier_id = supplier_link.substring(supplier_link.indexOf("//") + 2, supplier_link.indexOf(".en.alibaba")) } else { supplier_id = ""; } console.log(supplier_link, supplier_id); let link = document.createElement("a"); setAttributes(link, { "href": `${supplier_link}`, "target": "_blank", "class": "alisupplier_name", }); // 采集到弹出供应商信息 if (document.querySelector(".next-overlay-wrapper .supplier-tag-popup__content_href")) { if (!document.getElementById("force_supplier").checked) { ; if (supplier_id) { link.innerHTML = document.querySelector( ".next-overlay-wrapper .supplier-tag-popup__content_href").textContent + "(" + supplier_id + "," + supplier_idx +")"; } else { link.innerHTML = document.querySelector( ".next-overlay-wrapper .supplier-tag-popup__content_href").textContent + "(" + supplier_idx +")"; } supplier_container.appendChild(link); let supplier_opener = document.querySelector(".next-balloon-normal"); supplier_opener.parentNode.removeChild(supplier_opener); } } } } } } } // 显示阿里巴巴标签页名称 window.addEventListener('load', function () { let title_list = [".sc-hd-m-logo-anchor", ".av-change-container-title", ".auth-cent-list-container-title", ".product-task-title-name", ".top-bar-name", ".home-header>.home-header-title", ".rank-header-title", ".next-card-title", ".next-feedback-title", ".freight-template-app-title", ".showcase-zh>.fs22", ".inquiry-list-title", ".common-h1", ".title-wrapper>h1", ".live-manage-management-title>h3", ".home-header-title", ".big-title", "h2.page-title>span", ".next-tabs-tab-inner>div", ".bp2-nav-bar>div", ".component-page-title", ".header-title", ".page-title>h3", ".diagnosis-h3", ".collect-products-list h1", ".CGS_BASIC .page-title", "h2.sub-title", ".title", ".title-text", ".photo-header-title", "h1", ".page-title", ".manage-title", ".ui-header-extend", "h2", "h3"]; for (let i = 0; i < title_list.length; i++) { if (! /(w{3}|i|fundma|onetouch|waimaoquan|activity|alicrm|marketing|siteadmin|customize|offer)\.alibaba\.com/ .test(document.URL)) { if (document.querySelector(title_list[i])) { console.log(title_list[i], document.querySelector(title_list[i])); document.title = document.querySelector(title_list[i]).textContent; break; } } } }, false); if (/product_grow_up_manage/.test(document.URL)) { setInterval(productEdit, 2500); // 添加产品运营工作台产品编辑按钮 } else if (/overview/.test(document.URL)) { setInterval(productAnalyse, 2000); // 添加产品分析页面按钮, 含零效果产品 } else if (/(product-detail)|(\/product\/\d+-\d+)/.test(document.URL)) { setInterval(productDetail, 2500); // 添加产品详情页按钮 } else if (/photobank/.test(document.URL)) { setInterval(productPhoto, 2500); // 添加图片银行直接下载原图按钮 } else if (/keyword/.test(document.URL)) { setInterval(productKeywordIndex, 2500); // 添加关键词指数页搜索按钮 } else if (/hz-productposting\./.test(document.URL)) { setInterval(productList, 2500); // 产品编辑页增强 } else if (/(trade\/search)|(\/products\/)/.test(document.URL)) { // 添加搜索关键词显示公司名按钮 if (document.getElementsByClassName('refine-filters__result-left')) { let dswitch = document.createElement('label'); dswitch.innerHTML = "<input id='d_switch' type='checkbox'><div class='d_slider round'><span class='on'>ON</span><span class='off'>OFF</span></div>"; dswitch.setAttribute('class', 'switch'); document.getElementsByClassName('refine-filters__result-left')[0].appendChild(dswitch); document.getElementsByClassName('refine-filters__result-left')[0].innerHTML += '<input type="checkbox" id="force_supplier" style="margin: .4rem;position:relative;top:-3px"><label for="force_supplier">强制显示供应商名称</label>'; } setInterval(productSupplierDisplay, 2500); } else if (/post\.alibaba/ig.test(document.URL)) { window.addEventListener('load', productPublish(), false); // 产品编辑页增强 } })();
2022年07月11日
3 阅读
0 评论
0 点赞
2022-07-11
Alibaba国际站搜索商品自动显示供应商名称
// ==UserScript== // @name Alibaba国际站搜索商品自动显示供应商名称|运营有数Ali404.com // @namespace https://ali404.com/ // @version 1.0.2 // @description 在alibaba.com 搜索时直接显示商品供应商名称! // @author 运营有数 // @original-script https://greasyfork.org/scripts/432176 // @require http://code.jquery.com/jquery-1.11.0.min.js // @match https://www.alibaba.com/products/* // @match https://www.alibaba.com/trade/* // @match https://www.alibaba.com/*/trade/* // @icon data:image/jpg;base64,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 // @grant unsafeWindow // @license MIT // @supportURL https://ali404.com // ==/UserScript== setTimeout(function(){ 'use strict'; var html=document.documentElement.outerHTML; console.log("欢迎使用运营有数脚本|Www.Ali404.Com") var json=html.substring(html.indexOf("window.__page__data__config =")+30,html.indexOf("window.__page__data = window.__page__data__config.props")).trim(); var obj=$.parseJSON(json); var list=obj.props.offerResultData.offerList; for(var i=0;i<list.length;i++){ var supplierName = list[i].supplier.supplierName; var id= list[i].id; $("a[data-bizid=\""+id+"\"]").text(supplierName) } var span = $("i.ui2-icon ui2-icon-arrow-right ui2-icon-xs"); console.log(span) // Your code here... },1200);
2022年07月11日
2 阅读
0 评论
0 点赞
2022-07-03
Linux安装BBR
BBR是google的TCP阻塞控制算法,可以最大程度的利用带宽,提升网络传输速率。Linux kernel 4.9 及以上已支持 tcp_bbrBBR一键安装脚本wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh 1.查看系统内核版本:uname -r 看内核版本是否大于等于4.9,否则要升级内核,或者安装bbr。2.开启BBR:echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf 3.保存生效:sysctl -p 4.检查BBR是否启用:sysctl net.ipv4.tcp_available_congestion_control 返回值一般为: net.ipv4.tcp_available_congestion_control = reno cubic bbr sysctl net.ipv4.tcp_congestion_control 返回值一般为: net.ipv4.tcp_congestion_control = bbr sysctl net.core.default_qdisc 返回值一般为: net.core.default_qdisc = fq lsmod | grep bbr 返回值有类似:tcp_bbr 20480 10 则BBR模块已启动
2022年07月03日
3 阅读
0 评论
0 点赞
2022-06-01
Python日期时间处理
使用 time 模块展示当前日期和时间将天、小时、分钟转换为秒使用 Pandas 获取当前日期和时间将字符串转换为日期时间对象以毫秒为单位获取当前时间以 MST、EST、UTC、GMT 和 HST 获取当前日期时间从给定的日期当中获取星期几计算两个日期时间对象之间的时差将 5 分钟添加到 Unix 时间戳在 Python 中遍历一系列日期巴黎时间更改为纽约时间使用 Python 获得最后7个工作日从今天的日期和一个人的生日推算年龄获得本月的第一个星期二将整数转换为日期对象当前日期减去 N 天的天数比较两个日期从 datetime 对象中提取年份在 Python 中找到星期几从当前日期获取 7 天前的日期将两个日期时间对象之间的差值转换为秒获得任何一个月的第三个星期五从 Python 中的周数获取日期获取特定日期的工作日创建一个 15 分钟前的 DateTime从特定日期获取周的开始和结束日期两个日期之间的差异(以秒为单位)以这种格式获取昨天的日期MMDDYY从今天的日期获取上周三所有可用时区的列表打印获取指定开始日期和结束日期之间的日期范围毫秒转换为数据查找给定日期之后的第一个星期日的日期将(Unix)时间戳秒转换为日期和时间字符串以月为单位的两个日期之间的差异将本地时间字符串转换为 UTC获取当月的最后一个星期四从特定日期查找一年中的第几周从给定日期获取星期几用 AM PM 打印当前时间获得一个月的最后一天从工作日值中获取工作日名称将 N 小时数添加到当前日期时间从当前日期获取年、月、日、小时、分钟获取特定月份和年份的最后一个星期日查找特定日期的年份中的哪一天查找当前日期是工作日还是周末组合 datetime.date 和 datetime.time 对象获得每月的第 5 个星期一将日期时间对象转换为日期对象获取没有微秒的当前日期时间将 N 秒数添加到特定日期时间从当前日期获取两位数的月份和日期从特定日期获取月份数据的开始和结束日期以周为单位的两个日期之间的差异将字符串格式的日期转换为 Unix 时间戳获取最后一个周日和周六的日期检查对象是否属于 datetime.date 类型获取特定日期的周数获取 UTC 时间获取本周的开始和结束日期两个日期之间的差异(以分钟为单位)将日期时间对象转换为日期字符串获得上周五将 3 周添加到任何特定日期在其他两个日期之间生成一个随机日期查找从今天开始的第一个星期一的日期两个日期之间的差异(以天为单位)向当前日期添加六个月将数据时间对象转换为 Unix(时间戳)将年、月、日、时、分、秒的 N 个数字添加到当前日期时间获取指定开始日期和结束日期之间的日期范围减去 N 个年、月、日、时、分、秒到当前日期时间获取指定年份和月份的月份第一天的工作日和月份的天数打印特定年份的所有星期一打印特定年份的日历从月份编号中获取月份名称从给定日期获取一周的开始和结束日期根据当前日期查找上一个和下一个星期一的日期获取当前季度的第一个日期和最后一个日期使用 time 模块展示当前日期和时间import time from time import gmtime, strftime t = time.localtime() print (time.asctime(t)) print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())) print(strftime("%A", gmtime())) print(strftime("%D", gmtime())) print(strftime("%B", gmtime())) print(strftime("%y", gmtime())) # Convert seconds into GMT date print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime(1234567890)))使用 Pandas 获取当前日期和时间import pandas as pd print(pd.datetime.now()) print(pd.datetime.now().date()) print(pd.datetime.now().year) print(pd.datetime.now().month) print(pd.datetime.now().day) print(pd.datetime.now().hour) print(pd.datetime.now().minute) print(pd.datetime.now().second) print(pd.datetime.now().microsecond)将字符串转换为日期时间对象from datetime import datetime from dateutil import parser d1 = "Jan 7 2015 1:15PM" d2 = "2015 Jan 7 1:33PM" # If you know date format date1 = datetime.strptime(d1, '%b %d %Y %I:%M%p') print(type(date1)) print(date1) # If you don't know date format date2 = parser.parse(d2) print(type(date2)) print(date2)以毫秒为单位获取当前时间import time milliseconds = int(round(time.time() * 1000)) print(milliseconds)以 MST、EST、UTC、GMT 和 HST 获取当前日期时间from datetime import datetime from pytz import timezone mst = timezone('MST') print("Time in MST:", datetime.now(mst)) est = timezone('EST') print("Time in EST:", datetime.now(est)) utc = timezone('UTC') print("Time in UTC:", datetime.now(utc)) gmt = timezone('GMT') print("Time in GMT:", datetime.now(gmt)) hst = timezone('HST') print("Time in HST:", datetime.now(hst))从给定的日期当中获取星期几import datetime dayofweek = datetime.date(2010, 6, 16).strftime("%A") print(dayofweek) # weekday Monday is 0 and Sunday is 6 print("weekday():", datetime.date(2010, 6, 16).weekday()) # isoweekday() Monday is 1 and Sunday is 7 print("isoweekday()", datetime.date(2010, 6, 16).isoweekday()) dayofweek = datetime.datetime.today().strftime("%A") print(dayofweek) print("weekday():", datetime.datetime.today().weekday()) print("isoweekday()", datetime.datetime.today().isoweekday())计算两个日期时间对象之间的时差import datetime from datetime import timedelta datetimeFormat = '%Y-%m-%d %H:%M:%S.%f' date1 = '2016-04-16 10:01:28.585' date2 = '2016-03-10 09:56:28.067' diff = datetime.datetime.strptime(date1, datetimeFormat)\ - datetime.datetime.strptime(date2, datetimeFormat) print("Difference:", diff) print("Days:", diff.days) print("Microseconds:", diff.microseconds) print("Seconds:", diff.seconds)将 5 分钟添加到 Unix 时间戳import datetime import calendar future = datetime.datetime.utcnow() + datetime.timedelta(minutes=5) print(calendar.timegm(future.timetuple()))在 Python 中遍历一系列日期import datetime start = datetime.datetime.strptime("21-06-2020", "%d-%m-%Y") end = datetime.datetime.strptime("05-07-2020", "%d-%m-%Y") date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end - start).days)] for date in date_generated: print(date.strftime("%d-%m-%Y"))巴黎时间更改为纽约时间import pendulum in_paris = pendulum.datetime(2016, 8, 7, 22, 24, 30, tz='Europe/Paris') print(in_paris) in_us = in_paris.in_timezone('America/New_York') print(in_us)使用 Python 获得最后7个工作日from datetime import date from datetime import timedelta today = date.today() for i in range(7): d = today - timedelta(days=i) if d.weekday() < 5: print(d)从今天的日期和一个人的生日推算年龄from datetime import date def calculate_age(born): today = date.today() try: birthday = born.replace(year=today.year) except ValueError: birthday = born.replace(year=today.year, month=born.month + 1, day=1) if birthday > today: return today.year - born.year - 1 else: return today.year - born.year print(calculate_age(date(2001, 3, 1)))获得本月的第一个星期二import calendar from datetime import datetime c = calendar.Calendar(firstweekday=calendar.SUNDAY) monthcal = c.monthdatescalendar(datetime.today().year, datetime.today().month) try: tues = [day for week in monthcal for day in week if day.weekday() == calendar.TUESDAY and day.month == datetime.today().month][0] print(tues) except IndexError: print('No date found')将整数转换为日期对象from datetime import datetime i = 1545730073 timestamp = datetime.fromtimestamp(i) print(timestamp) print(type(timestamp))当前日期减去 N 天的天数from datetime import datetime, timedelta d = datetime.today() - timedelta(days=5) print(d)比较两个日期import datetime a = datetime.datetime(2020, 12, 31, 23, 59, 59) b = datetime.datetime(2020, 11, 30, 23, 59, 59) print(a < b) print(a > b)从 datetime 对象中提取年份import datetime year = datetime.date.today().year print(year)在 Python 中找到星期几import pendulum dt = pendulum.parse('2021-05-18') print(dt.day_of_week) dt = pendulum.parse('2021-05-01') print(dt.day_of_week) dt = pendulum.parse('2021-05-21') print(dt.day_of_week)从当前日期获取 7 天前的日期from datetime import datetime, timedelta now = datetime.now() for x in range(7): d = now - timedelta(days=x) print(d.strftime("%Y-%m-%d"))将两个日期时间对象之间的差值转换为秒import datetime time1 = datetime.datetime.strptime('19 01 2021', '%d %m %Y') time2 = datetime.datetime.strptime('25 01 2021', '%d %m %Y') difference = time2 - time1 print(difference) seconds = difference.total_seconds() print(seconds)获得任何一个月的第三个星期五import calendar c = calendar.Calendar(firstweekday=calendar.SUNDAY) year = 2021 month = 5 monthcal = c.monthdatescalendar(year, month) try: third_friday = [day for week in monthcal for day in week if day.weekday() == calendar.FRIDAY and day.month == month][2] print(third_friday) except IndexError: print('No date found')从 Python 中的周数获取日期import datetime from dateutil.relativedelta import relativedelta week = 25 year = 2021 date = datetime.date(year, 1, 1) + relativedelta(weeks=+week) print(date)获取特定日期的工作日import datetime print(datetime.date(2020, 5, 15).isocalendar()[2])创建一个 15 分钟前的 DateTimeimport datetime dt = datetime.datetime.now() - datetime.timedelta(minutes=15) print(dt)从特定日期获取周的开始和结束日期import pendulum dt = pendulum.datetime(2012, 9, 5) start = dt.start_of('week') print(start.to_datetime_string()) end = dt.end_of('week') print(end.to_datetime_string())两个日期之间的差异(以秒为单位)from datetime import datetime fmt = '%Y-%m-%d %H:%M:%S' d1 = datetime.strptime('2020-01-01 17:31:22', fmt) d2 = datetime.strptime('2020-01-03 17:31:22', fmt) days_diff = d2 - d1 print(days_diff.days * 24 * 60 * 60)以这种格式获取昨天的日期MMDDYYfrom datetime import date, timedelta yesterday = date.today() - timedelta(days=1) print(yesterday.strftime('%m%d%y'))从今天的日期获取上周三from datetime import date from datetime import timedelta today = date.today() offset = (today.weekday() - 2) % 7 wednesday = today - timedelta(days=offset) print(wednesday)所有可用时区的列表打印import pytz for i in pytz.all_timezones: print(i)获取指定开始日期和结束日期之间的日期范围import datetime start = datetime.datetime.strptime("21-06-2020", "%d-%m-%Y") end = datetime.datetime.strptime("05-07-2020", "%d-%m-%Y") date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end - start).days)] for date in date_generated: print(date.strftime("%d-%m-%Y"))毫秒转换为数据import datetime time_in_millis = 1596542285000 dt = datetime.datetime.fromtimestamp(time_in_millis / 1000.0, tz=datetime.timezone.utc) print(dt)查找给定日期之后的第一个星期日的日期import datetime def next_weekday(d, weekday): days_ahead = weekday - d.weekday() if days_ahead <= 0: days_ahead += 7 return d + datetime.timedelta(days_ahead) d = datetime.date(2021, 5, 16) next_sunday = next_weekday(d, 6) print(next_sunday)将(Unix)时间戳秒转换为日期和时间字符串from datetime import datetime dateStr = datetime.fromtimestamp(1415419007).strftime("%A, %B %d, %Y %I:%M:%S") print(type(dateStr)) print(dateStr)以月为单位的两个日期之间的差异from datetime import datetime from dateutil import relativedelta date1 = datetime.strptime('2014-01-12 12:00:00', '%Y-%m-%d %H:%M:%S') date2 = datetime.strptime('2021-07-15 12:00:00', '%Y-%m-%d %H:%M:%S') r = relativedelta.relativedelta(date2, date1) print(r.months + (12 * r.years))将本地时间字符串转换为 UTCfrom datetime import * from dateutil import * from dateutil.tz import * utc_zone = tz.gettz('UTC') local_zone = tz.gettz('America/Chicago') utc_zone = tz.tzutc() local_zone = tz.tzlocal() local_time = datetime.strptime("2020-10-25 15:12:00", '%Y-%m-%d %H:%M:%S') print(local_time) local_time = local_time.replace(tzinfo=local_zone) print(local_time) utc_time = local_time.astimezone(utc_zone) print(utc_time) utc_string = utc_time.strftime('%Y-%m-%d %H:%M:%S') print(utc_string)将本地时间字符串转换为 UTCfrom datetime import * from dateutil import * from dateutil.tz import * utc_zone = tz.gettz('UTC') local_zone = tz.gettz('America/Chicago') utc_zone = tz.tzutc() local_zone = tz.tzlocal() local_time = datetime.strptime("2020-10-25 15:12:00", '%Y-%m-%d %H:%M:%S') print(local_time) local_time = local_time.replace(tzinfo=local_zone) print(local_time) utc_time = local_time.astimezone(utc_zone) print(utc_time) utc_string = utc_time.strftime('%Y-%m-%d %H:%M:%S') print(utc_string)获取当月的最后一个星期四import calendar from datetime import datetime month = calendar.monthcalendar(datetime.today().year, datetime.today().month) thrusday = max(month[-1][calendar.THURSDAY], month[-2][calendar.THURSDAY]) print(thrusday)从特定日期查找一年中的第几周import pendulum dt = pendulum.parse('2015-05-18') print(dt.week_of_year) dt = pendulum.parse('2019-12-01') print(dt.week_of_year) dt = pendulum.parse('2018-01-21') print(dt.week_of_year)从给定日期获取星期几import datetime import calendar dt = datetime.datetime(2021, 4, 25, 23, 24, 55, 173504) print(calendar.day_name[dt.weekday()])用 AM PM 打印当前时间from datetime import datetime print(datetime.today().strftime("%I:%M %p"))获得一个月的最后一天import calendar print(calendar.monthrange(2002, 1)[1]) print(calendar.monthrange(2008, 6)[1]) print(calendar.monthrange(2012, 2)[1]) print(calendar.monthrange(2015, 2)[1])从工作日值中获取工作日名称import calendar print(calendar.day_name[0]) print(calendar.day_name[1]) print(calendar.day_name[2]) print(calendar.day_name[3]) print(calendar.day_name[4]) print(calendar.day_name[5]) print(calendar.day_name[6])将 N 小时数添加到当前日期时间from datetime import datetime, timedelta d = datetime.today() + timedelta(hours=18) print(d)从当前日期获取年、月、日、小时、分钟import datetime now = datetime.datetime.now() print(now.year, now.month, now.day, now.hour, now.minute, now.second)获取特定月份和年份的最后一个星期日import calendar month = calendar.monthcalendar(2021, 2) last_sunday = max(month[-1][calendar.SUNDAY], month[-2][calendar.SUNDAY]) print(last_sunday)查找特定日期的年份中的哪一天import pendulum dt = pendulum.parse('2015-05-18') print(dt.day_of_year) dt = pendulum.parse('2019-12-01') print(dt.day_of_year) dt = pendulum.parse('2018-01-21') print(dt.day_of_year)查找当前日期是工作日还是周末import datetime weekno = datetime.datetime.today().weekday() if weekno < 5: print("Weekday") else: # 5 Sat, 6 Sun print("Weekend")组合 datetime.date 和 datetime.time 对象import datetime d = datetime.datetime.combine(datetime.date(2020, 11, 14), datetime.time(10, 23, 15)) print(d)获得每月的第 5 个星期一import calendar c = calendar.Calendar(firstweekday=calendar.SUNDAY) year = 2016 month = 2 monthcal = c.monthdatescalendar(year, month) try: fifth_monday = [day for week in monthcal for day in week if day.weekday() == calendar.MONDAY and day.month == month][4] print(fifth_monday) except IndexError: print('No date found')将日期时间对象转换为日期对象from datetime import datetime datetime_obj = datetime(2020, 12, 15, 10, 15, 45, 321474) print(datetime_obj) date_obj = datetime_obj.date() print(date_obj)获取没有微秒的当前日期时间from datetime import datetime print(datetime.now().isoformat(' ', 'seconds'))将 N 秒数添加到特定日期时间import datetime a = datetime.datetime(2020, 12, 31, 23, 59, 45) b = a + datetime.timedelta(seconds=30) print(a) print(b)从当前日期获取两位数的月份和日期import datetime dt = datetime.datetime.now() print(dt.strftime('%m')) print('{:02d}'.format(dt.month)) print(f'{dt.month:02d}') print('%02d' % dt.month) print(dt.strftime('%d')) print('{:02d}'.format(dt.day)) print(f'{dt.day:02d}') print('%02d' % dt.day)从特定日期获取月份数据的开始和结束日期import pendulum dt = pendulum.datetime(2012, 9, 5) start = dt.start_of('month') print(start.to_datetime_string()) end = dt.end_of('month') print(end.to_datetime_string())以周为单位的两个日期之间的差异from datetime import date date1 = date(2020, 12, 23) date2 = date(2021, 5, 11) days = abs(date1 - date2).days print(days // 7)将字符串格式的日期转换为 Unix 时间戳import datetime stime = '15/05/2021' print(datetime.datetime.strptime(stime, "%d/%m/%Y").timestamp())获取最后一个周日和周六的日期from datetime import datetime, timedelta def prior_week_end(): return datetime.now() - timedelta(days=((datetime.now().isoweekday() + 1) % 7)) def prior_week_start(): return prior_week_end() - timedelta(days=6) print('Sunday', format(prior_week_start())) print('Saturday', format(prior_week_end()))检查对象是否属于 datetime.date 类型import datetime x = '2012-9-1' y = datetime.date(2012, 9, 1) print(isinstance(x, datetime.date)) print(isinstance(y, datetime.date))获取特定日期的周数import datetime print(datetime.date(2020, 5, 15).isocalendar()[1])获取 UTC 时间from datetime import datetime dt = datetime.utcnow() print(dt)获取本周的开始和结束日期import pendulum today = pendulum.now() start = today.start_of('week') print(start.to_datetime_string()) end = today.end_of('week') print(end.to_datetime_string())两个日期之间的差异(以分钟为单位)from datetime import datetime fmt = '%Y-%m-%d %H:%M:%S' d1 = datetime.strptime('2010-01-01 17:31:22', fmt) d2 = datetime.strptime('2010-01-03 17:31:22', fmt) days_diff = d2 - d1 print(days_diff.days * 24 * 60)将日期时间对象转换为日期字符串import datetime t = datetime.datetime(2020, 12, 23) x = t.strftime('%m/%d/%Y') print(x)获得上周五from datetime import date from datetime import timedelta today = date.today() offset = (today.weekday() - 4) % 7 friday = today - timedelta(days=offset) print(friday)将 3 周添加到任何特定日期import pendulum dt = pendulum.datetime(2012, 2, 15) dt = dt.add(weeks=3) print(dt.to_date_string())在其他两个日期之间生成一个随机日期import random import time def str_time_prop(start, end, time_format, prop): stime = time.mktime(time.strptime(start, time_format)) etime = time.mktime(time.strptime(end, time_format)) ptime = stime + prop * (etime - stime) return time.strftime(time_format, time.localtime(ptime)) def random_date(start, end, prop): return str_time_prop(start, end, '%m/%d/%Y %I:%M %p', prop) print(random_date("1/1/2020 1:10 PM", "1/1/2021 1:10 AM", random.random()))查找从今天开始的第一个星期一的日期from dateutil.rrule import rrule, WEEKLY, MO from datetime import date next_monday = rrule(freq=WEEKLY, dtstart=date.today(), byweekday=MO, count=1)[0] print(next_monday)两个日期之间的差异(以天为单位)from datetime import date d1 = date(2019, 8, 18) d2 = date(2021, 12, 10) days_diff = d2 - d1 print(days_diff.days)向当前日期添加六个月from datetime import datetime from dateutil.relativedelta import * date = datetime.now() print(date) date = date + relativedelta(months=+6) print(date)将数据时间对象转换为 Unix(时间戳)import datetime import time # Saturday, October 10, 2015 10:10:00 AM date_obj = datetime.datetime(2015, 10, 10, 10, 10) print("Unix Timestamp: ", (time.mktime(date_obj.timetuple())))将年、月、日、时、分、秒的 N 个数字添加到当前日期时间import datetime from dateutil.relativedelta import relativedelta add_days = datetime.datetime.today() + relativedelta(days=+6) add_months = datetime.datetime.today() + relativedelta(months=+6) add_years = datetime.datetime.today() + relativedelta(years=+6) add_hours = datetime.datetime.today() + relativedelta(hours=+6) add_mins = datetime.datetime.today() + relativedelta(minutes=+6) add_seconds = datetime.datetime.today() + relativedelta(seconds=+6) print("Current Date Time:", datetime.datetime.today()) print("Add 6 days:", add_days) print("Add 6 months:", add_months) print("Add 6 years:", add_years) print("Add 6 hours:", add_hours) print("Add 6 mins:", add_mins) print("Add 6 seconds:", add_seconds)获取指定开始日期和结束日期之间的日期范围import datetime start = datetime.datetime.strptime("2016-06-15", "%Y-%m-%d") end = datetime.datetime.strptime("2016-06-30", "%Y-%m-%d") date_array = \ (start + datetime.timedelta(days=x) for x in range(0, (end-start).days)) for date_object in date_array: print(date_object.strftime("%Y-%m-%d"))减去 N 个年、月、日、时、分、秒到当前日期时间import datetime from dateutil.relativedelta import relativedelta sub_days = datetime.datetime.today() + relativedelta(days=-6) sub_months = datetime.datetime.today() + relativedelta(months=-6) sub_years = datetime.datetime.today() + relativedelta(years=-6) sub_hours = datetime.datetime.today() + relativedelta(hours=-6) sub_mins = datetime.datetime.today() + relativedelta(minutes=-6) sub_seconds = datetime.datetime.today() + relativedelta(seconds=-6) print("Current Date Time:", datetime.datetime.today()) print("Subtract 6 days:", add_days) print("Subtract 6 months:", add_months) print("Subtract 6 years:", add_years) print("Subtract 6 hours:", add_hours) print("Subtract 6 mins:", add_mins) print("Subtract 6 seconds:", add_seconds)获取指定年份和月份的月份第一天的工作日和月份的天数import calendar print("Year:2002 - Month:2") month_range = calendar.monthrange(2002, 2) print("Weekday of first day of the month:", month_range[0]) print("Number of days in month:", month_range[1]) print() print("Year:2010 - Month:5") month_range = calendar.monthrange(2010, 5) print("Weekday of first day of the month:", month_range[0]) print("Number of days in month:", month_range[1])打印特定年份的所有星期一from datetime import date, timedelta year = 2018 date_object = date(year, 1, 1) date_object += timedelta(days=1-date_object.isoweekday()) while date_object.year == year: print(date_object) date_object += timedelta(days=7)打印特定年份的日历import calendar cal_display = calendar.TextCalendar(calendar.MONDAY) # Year: 2019 # Column width: 1 # Lines per week: 1 # Number of spaces between month columns: 0 # No. of months per column: 2 print(cal_display.formatyear(2019, 1, 1, 0, 2))从月份编号中获取月份名称import calendar import datetime # Month name from number print("Month name from number 5:") month_num = 1 month_abre = datetime.date(2015, month_num, 1).strftime('%b') month_name = datetime.date(2015, month_num, 1).strftime('%B') print("Short Name:", month_abre) print("Full Name:", month_name) print("\nList of all months from calendar") # Print list of all months from calendar for month_val in range(1, 13): print(calendar.month_abbr[month_val], "-", calendar.month_name[month_val])从给定日期获取一周的开始和结束日期from datetime import datetime, timedelta date_str = '2018-01-14' date_obj = datetime.strptime(date_str, '%Y-%m-%d') start_of_week = date_obj - timedelta(days=date_obj.weekday()) # Monday end_of_week = start_of_week + timedelta(days=6) # Sunday print(start_of_week) print(end_of_week)根据当前日期查找上一个和下一个星期一的日期import datetime today = datetime.date.today() last_monday = today - datetime.timedelta(days=today.weekday()) coming_monday = today + datetime.timedelta(days=-today.weekday(), weeks=1) print("Today:", today) print("Last Monday:", last_monday) print("Coming Monday:", coming_monday)获取当前季度的第一个日期和最后一个日期from datetime import datetime, timedelta current_date = datetime.now() current_quarter = round((current_date.month - 1) / 3 + 1) first_date = datetime(current_date.year, 3 * current_quarter - 2, 1) last_date = datetime(current_date.year, 3 * current_quarter + 1, 1)\ + timedelta(days=-1) print("First Day of Quarter:", first_date) print("Last Day of Quarter:", last_date)
2022年06月01日
5 阅读
0 评论
0 点赞
1
...
4
5
6
7