日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python写闲鱼脚本_自动化篇 - 躺着收钱!闲鱼自动发货机器人来啦~

發布時間:2024/3/13 python 573 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python写闲鱼脚本_自动化篇 - 躺着收钱!闲鱼自动发货机器人来啦~ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1

目 標 場 景

閑魚上,很多賣家選擇在平臺上賣虛擬商品,大部分虛擬商品的交易方式都是通過網盤鏈接來完成交易。

在很多時候,商品被買家拍下并付款后,都需要一段時間的等待,一直到賣家看到消息后才能完成發貨,這樣顯得商品的交易效率很低下。

那能不能做到「自動發貨、自動上新」,全程自動化操作發貨呢?答案是肯定的。

本篇文章的目的是為閑魚定制一個「自動發貨機器人」,實現商品自動發貨的功能。

2

編 寫 代 碼

上篇文章 已經實現了消息自動回復的功能,本篇文章將繼續在這個基礎之上去實現自動發貨機器人的功能。

首先,我們需要根據聊天界面,對訂單的狀態進行分類。

閑魚中一個商品的訂單狀態包含:交易前、等待買家付款、等待賣家發貨、退款等多種狀態。

這里,我們只需要把交易前和等待賣家發貨兩種狀態給篩選出來。

/***

* 判斷訂單的狀態

*/

public static int getOrderStatus(AccessibilityNodeInfo node)

{

List status_nodes = node.findAccessibilityNodeInfosByViewId(Ids.id_order_status);

int status = 0;

if (null == status_nodes || 0 == status_nodes.size())

{

status = -1;

} else

{

AccessibilityNodeInfo first_node = status_nodes.get(0);

String status_content = first_node.getText().toString();

//交易前的普通對話

if (TextUtils.equals("交易前聊一聊", status_content))

{

status = 0;

} else if (TextUtils.equals("等待賣家發貨", status_content))

{

status = 1;

} else if (TextUtils.equals("等待買家付款", status_content))

{

status = 2;

} else

{

status = 3;

}

}

return status;

}

然后編寫 UI 界面,將發貨鏈接地址輸入到輸入框內,點擊保存,保存到本地內存中。

//輸入發貨內容,比如網盤地址

String content = delivery_rebot_content_et.getEditableText().toString().trim();

if (TextUtils.isEmpty(content))

{

SnackbarUtils.Short(delivery_rebot_set_content_btn, "請先輸入要發貨的內容").show();

} else

{

SettingConfig.getInstance().setAutoDeliverContent(content);

delivery_rebot_content_et.getEditableText().clear();

SnackbarUtils.Long(delivery_rebot_set_content_btn, "設置發貨成功!!!").show();

}

當判斷當前頁面是聊天界面,并且訂單狀態是「等待賣家發貨」時,就從內存中讀取數據,將網盤鏈接地址以消息的形式發送給買家。

//賣家已拍下,自動發貨

//發貨的內容,一般是網盤地址

String content = SettingConfig.getInstance().getAutoDeliverContent();

//回復內容

reply_content(event, content);

發完消息后,接著查找右上角的「去發貨」元素,執行點擊操作,模擬去發貨。

監聽到到達「發貨界面」的事件之后,查找右上角的「無需寄件」元素,再進行一次點擊操作。

//發貨界面 Activity

public static String class_name_deliver = "com.taobao.idlefish.webview.WebHybridActivity";

/***

* 判斷是否是發貨界面

*/

public static boolean judgeIsDeliverPage(AccessibilityNodeInfo node)

{

boolean result = false;

List center_node = node.findAccessibilityNodeInfosByViewId(Ids.id_center_title);

List right_node = node.findAccessibilityNodeInfosByViewId(Ids.id_right_up);

if (center_node != null && right_node != null && center_node.size() > 0 && right_node.size() > 0 &&

center_node.get(0).getText().equals("我要發貨") && right_node.get(0).getText().equals("無需寄件")

)

{

result = true;

}

return result;

}

/***

* 發貨界面處理

* @param event

*/

private void handleDeliverMet(AccessibilityEvent event)

{

AccessibilityNodeInfo rightNode = findViewByIDAndText(Ids.id_right_up, "無需寄件");

performViewClick(rightNode);

}

通過上面的操作,會彈出一個用于確認發貨的對話框。

我們接著使用 Android Monitor 查看當前頁面的元素信息,發現這個頁面除了標題欄,內容區都包含在一個「WebView」里面。

由于元素包含在 WebView 里,如果直接利用上面的方式查找對話框中的「文本內容為繼續」的按鈕元素是獲取不到的。

這里需要對配置文件進行修改,增加一個「flags」的屬性,保證能獲取到當前頁面包含 Web 元素的所有元素內容。

@Override

protected void onServiceConnected()

{

super.onServiceConnected();

AccessibilityServiceInfo serviceInfo = new AccessibilityServiceInfo();

serviceInfo.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;

serviceInfo.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;

serviceInfo.packageNames = new String[]{"com.taobao.idlefish"};

serviceInfo.notificationTimeout = 100;

//保證能夠獲取到Web元素

serviceInfo.flags = serviceInfo.flags | AccessibilityServiceInfo.FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY;

setServiceInfo(serviceInfo);

}

然后先獲取到 WebView 元素,再遍歷查找篩選其子元素。

/***

* 查找WebView的控件,如果找到,執行點擊操作

* @param content

*/

public void findWebViewByTextAndClick(String content)

{

AccessibilityNodeInfo rootNode = findViewByID(Ids.id_webview_root);

if (rootNode != null)

{

for (int i = 0; i < rootNode.getChildCount(); i++)

{

AccessibilityNodeInfo child = rootNode.getChild(i);

if ("com.uc.webview.export.WebView".contentEquals(child.getClassName()))

{

findEveryViewNode(child, content);

break;

}

}

} else

{

Log.e("xag", "webview rootview is null");

}

}

當查找到一個元素文本內容為確定,并且元素「可點擊」,就執行點擊操作,即完成了當前商品發貨的操作。

private void findEveryViewNode(AccessibilityNodeInfo node, String content)

{

if (null != node && node.getChildCount() > 0)

{

for (int i = 0; i < node.getChildCount(); i++)

{

AccessibilityNodeInfo child = node.getChild(i);

// 有時 child 為空

if (child == null)

{

continue;

}

String className = child.getClassName().toString();

CharSequence text_raw = child.getText();

if ("android.view.View".equals(className) && !TextUtils.isEmpty(text_raw))

{

boolean isClickable = child.isClickable();

Log.e("xxx", "內容是:" + text_raw.toString());

//isClickable:可點擊的按鈕,按鈕內容是繼續

if (isClickable && TextUtils.equals(content, text_raw.toString()))

{

child.performAction(AccessibilityNodeInfo.ACTION_CLICK);

break;

}

}

// 遞歸調用

findEveryViewNode(child, content);

}

}

}

3

結 果 結 論

完成發貨之后,執行全局返回的操作,直到頁面重新回到閑魚主界面為止。

當然,也可以在發貨完成之后,點擊這個商品的重新編輯按鈕,修改后再次發布商品,這樣就可以實現一件商品「 自動發貨、自動上新」的循環操作。

我已經將全部源碼上傳到后臺上,關注公眾號后回復「發貨機器人」即可獲得下載鏈接。

另外,我也整理一份正確運營閑魚的思維導圖,有需要的可以回復「閑魚腦圖 」獲取。

如果你覺得文章還不錯,請大家點贊分享下。你的肯定是我最大的鼓勵和支持。

推薦閱讀:

自動化篇 - 為閑魚制作一個客服機器人(上)

自動化篇 - ***們使用的自動化方案,很多人還不知道

THANDKS

-End -

總結

以上是生活随笔為你收集整理的python写闲鱼脚本_自动化篇 - 躺着收钱!闲鱼自动发货机器人来啦~的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。