Skip to content

Instantly share code, notes, and snippets.

@wangkuiyi
Last active February 4, 2017 08:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wangkuiyi/659055a603e58606e1177f6652e9317d to your computer and use it in GitHub Desktop.
Save wangkuiyi/659055a603e58606e1177f6652e9317d to your computer and use it in GitHub Desktop.
This bash script checks if some issues of a Github repo has been there without comments in more than 30 minutes.
project="wangkuiyi/mapreduce-lite"
if [[ $# -ne 0 ]]; then
project=$1
fi
issues_per_page=25
page=1
until [ $issues_per_page -lt 25 ]; do
echo Parsing page: $page >&2
url=$(printf 'https://github.com/%s/issues?page=%d' $project $page)
url=$url+'&q=is%3Aissue'
echo $url >&2
issues_per_page=$(curl -s "$url" | grep "<a href=\"/$project/issues/" | grep 'class="link-gray-dark' | sed "s/^.*issues\/\([0-9]*\).*$/\1/" | tee issues.cache | wc -l)
if [[ $issues_per_page -eq 0 ]]; then
echo "Waiting for a while before retry talking to Github.com ..." >&2
sleep 61
issues_per_page=$(curl -s "$url" | grep "<a href=\"/$project/issues/" | grep 'class="link-gray-dark' | sed "s/^.*issues\/\([0-9]*\).*$/\1/" | tee issues.cache | wc -l)
fi
echo issues per page: $issues_per_page >&2
let page=page+1
for issue in $(cat issues.cache); do
issue_url=$(printf 'https://github.com/%s/issues/%d' $project $issue)
comments_per_issue=$(curl -s $issue_url | grep -A 3 "commented" | grep 'relative-time' | sed "s/^.*datetime=\"\([^Z]*\).*$/\1/" | tee comments.cache | wc -l)
if [[ $comments_per_issue -eq 1 ]]; then
current_sec=$(date +%s)
comment_time=$(head -n1 comments.cache)
comment_sec=$(date -j -f "%Y-%m-%dT%H:%M:%S" $comment_time +%s)
diff_sec=$(expr $current_sec - $comment_sec)
comment_day=$(date -j -f "%Y-%m-%dT%H:%M:%S" $comment_time +%a)
if [[ $diff_sec -gt 1800 ]]; then
echo "It has been $(expr $diff_sec / 3600) hours since $issue_url was filed at $comment_time $comment_day"
fi
fi
done
sleep 2 # work around the Github abuse detection mechanism.
done
@wangkuiyi
Copy link
Author

wangkuiyi commented Jan 31, 2017

To run this script to check PaddlePaddle/Paddle,

./check_late_response_to_issues.sh PaddlePaddle/Paddle

The output and a sumamrization, as I run on 2017-01-31, are as follows:

image 2

It has been 31 hours since https://github.com/PaddlePaddle/Paddle/issues/1242 was filed at 2017-01-30T03:30:44 Mon
It has been 83 hours since https://github.com/PaddlePaddle/Paddle/issues/1238 was filed at 2017-01-27T23:14:20 Fri
It has been 106 hours since https://github.com/PaddlePaddle/Paddle/issues/1236 was filed at 2017-01-27T00:24:03 Fri
It has been 129 hours since https://github.com/PaddlePaddle/Paddle/issues/1228 was filed at 2017-01-26T01:48:27 Thu
It has been 214 hours since https://github.com/PaddlePaddle/Paddle/issues/1215 was filed at 2017-01-22T12:20:40 Sun
It has been 225 hours since https://github.com/PaddlePaddle/Paddle/issues/1208 was filed at 2017-01-22T02:02:23 Sun
It has been 315 hours since https://github.com/PaddlePaddle/Paddle/issues/1181 was filed at 2017-01-18T07:34:08 Wed
It has been 325 hours since https://github.com/PaddlePaddle/Paddle/issues/1177 was filed at 2017-01-17T22:04:13 Tue
It has been 335 hours since https://github.com/PaddlePaddle/Paddle/issues/1174 was filed at 2017-01-17T11:43:16 Tue
It has been 340 hours since https://github.com/PaddlePaddle/Paddle/issues/1165 was filed at 2017-01-17T06:10:54 Tue
It has been 369 hours since https://github.com/PaddlePaddle/Paddle/issues/1153 was filed at 2017-01-16T02:00:19 Mon
It has been 433 hours since https://github.com/PaddlePaddle/Paddle/issues/1145 was filed at 2017-01-13T09:15:40 Fri
It has been 454 hours since https://github.com/PaddlePaddle/Paddle/issues/1139 was filed at 2017-01-12T13:03:59 Thu
It has been 457 hours since https://github.com/PaddlePaddle/Paddle/issues/1136 was filed at 2017-01-12T09:07:54 Thu
It has been 461 hours since https://github.com/PaddlePaddle/Paddle/issues/1131 was filed at 2017-01-12T05:29:14 Thu
It has been 478 hours since https://github.com/PaddlePaddle/Paddle/issues/1125 was filed at 2017-01-11T13:03:31 Wed
It has been 488 hours since https://github.com/PaddlePaddle/Paddle/issues/1117 was filed at 2017-01-11T02:57:06 Wed
It has been 503 hours since https://github.com/PaddlePaddle/Paddle/issues/1113 was filed at 2017-01-10T11:35:57 Tue
It has been 529 hours since https://github.com/PaddlePaddle/Paddle/issues/1100 was filed at 2017-01-09T09:27:38 Mon
It has been 674 hours since https://github.com/PaddlePaddle/Paddle/issues/1055 was filed at 2017-01-03T08:52:32 Tue
It has been 679 hours since https://github.com/PaddlePaddle/Paddle/issues/1053 was filed at 2017-01-03T03:28:27 Tue
It has been 817 hours since https://github.com/PaddlePaddle/Paddle/issues/1031 was filed at 2016-12-28T10:04:49 Wed
It has been 822 hours since https://github.com/PaddlePaddle/Paddle/issues/1026 was filed at 2016-12-28T04:57:14 Wed
It has been 823 hours since https://github.com/PaddlePaddle/Paddle/issues/1025 was filed at 2016-12-28T03:30:37 Wed
It has been 958 hours since https://github.com/PaddlePaddle/Paddle/issues/997 was filed at 2016-12-22T12:15:58 Thu
It has been 962 hours since https://github.com/PaddlePaddle/Paddle/issues/995 was filed at 2016-12-22T08:42:14 Thu
It has been 964 hours since https://github.com/PaddlePaddle/Paddle/issues/992 was filed at 2016-12-22T06:42:06 Thu
It has been 1010 hours since https://github.com/PaddlePaddle/Paddle/issues/959 was filed at 2016-12-20T08:48:47 Tue
It has been 1157 hours since https://github.com/PaddlePaddle/Paddle/issues/878 was filed at 2016-12-14T05:30:13 Wed
It has been 1157 hours since https://github.com/PaddlePaddle/Paddle/issues/877 was filed at 2016-12-14T05:21:03 Wed
It has been 1161 hours since https://github.com/PaddlePaddle/Paddle/issues/870 was filed at 2016-12-14T01:50:19 Wed
It has been 1179 hours since https://github.com/PaddlePaddle/Paddle/issues/857 was filed at 2016-12-13T07:46:36 Tue
It has been 1179 hours since https://github.com/PaddlePaddle/Paddle/issues/856 was filed at 2016-12-13T07:19:29 Tue
It has been 1180 hours since https://github.com/PaddlePaddle/Paddle/issues/855 was filed at 2016-12-13T06:54:27 Tue
It has been 1184 hours since https://github.com/PaddlePaddle/Paddle/issues/848 was filed at 2016-12-13T03:06:22 Tue
It has been 1199 hours since https://github.com/PaddlePaddle/Paddle/issues/840 was filed at 2016-12-12T11:52:12 Mon
It has been 1205 hours since https://github.com/PaddlePaddle/Paddle/issues/823 was filed at 2016-12-12T05:38:08 Mon
It has been 1206 hours since https://github.com/PaddlePaddle/Paddle/issues/822 was filed at 2016-12-12T04:42:41 Mon
It has been 1240 hours since https://github.com/PaddlePaddle/Paddle/issues/815 was filed at 2016-12-10T18:14:39 Sat
It has been 1264 hours since https://github.com/PaddlePaddle/Paddle/issues/811 was filed at 2016-12-09T18:55:14 Fri
It has been 1274 hours since https://github.com/PaddlePaddle/Paddle/issues/803 was filed at 2016-12-09T08:30:16 Fri
It has been 1298 hours since https://github.com/PaddlePaddle/Paddle/issues/785 was filed at 2016-12-08T08:30:45 Thu
It has been 1300 hours since https://github.com/PaddlePaddle/Paddle/issues/776 was filed at 2016-12-08T06:45:05 Thu
It has been 1343 hours since https://github.com/PaddlePaddle/Paddle/issues/748 was filed at 2016-12-06T11:45:03 Tue
It has been 1348 hours since https://github.com/PaddlePaddle/Paddle/issues/742 was filed at 2016-12-06T06:46:50 Tue
It has been 1359 hours since https://github.com/PaddlePaddle/Paddle/issues/735 was filed at 2016-12-05T20:03:47 Mon
It has been 1370 hours since https://github.com/PaddlePaddle/Paddle/issues/727 was filed at 2016-12-05T08:22:46 Mon
It has been 1466 hours since https://github.com/PaddlePaddle/Paddle/issues/691 was filed at 2016-12-01T08:58:11 Thu
It has been 1487 hours since https://github.com/PaddlePaddle/Paddle/issues/676 was filed at 2016-11-30T11:45:06 Wed
It has been 1487 hours since https://github.com/PaddlePaddle/Paddle/issues/675 was filed at 2016-11-30T11:36:19 Wed
It has been 1515 hours since https://github.com/PaddlePaddle/Paddle/issues/650 was filed at 2016-11-29T07:57:28 Tue
It has been 1515 hours since https://github.com/PaddlePaddle/Paddle/issues/649 was filed at 2016-11-29T07:36:58 Tue
It has been 1586 hours since https://github.com/PaddlePaddle/Paddle/issues/630 was filed at 2016-11-26T08:20:11 Sat
It has been 1608 hours since https://github.com/PaddlePaddle/Paddle/issues/622 was filed at 2016-11-25T10:17:24 Fri
It has been 1636 hours since https://github.com/PaddlePaddle/Paddle/issues/592 was filed at 2016-11-24T06:40:44 Thu
It has been 1658 hours since https://github.com/PaddlePaddle/Paddle/issues/574 was filed at 2016-11-23T09:02:33 Wed
It has been 1685 hours since https://github.com/PaddlePaddle/Paddle/issues/558 was filed at 2016-11-22T05:29:37 Tue
It has been 1709 hours since https://github.com/PaddlePaddle/Paddle/issues/546 was filed at 2016-11-21T05:14:06 Mon
It has been 1711 hours since https://github.com/PaddlePaddle/Paddle/issues/543 was filed at 2016-11-21T03:40:57 Mon
It has been 1776 hours since https://github.com/PaddlePaddle/Paddle/issues/530 was filed at 2016-11-18T10:25:47 Fri
It has been 1777 hours since https://github.com/PaddlePaddle/Paddle/issues/529 was filed at 2016-11-18T09:47:43 Fri
It has been 1777 hours since https://github.com/PaddlePaddle/Paddle/issues/528 was filed at 2016-11-18T09:27:53 Fri
It has been 1778 hours since https://github.com/PaddlePaddle/Paddle/issues/524 was filed at 2016-11-18T08:12:53 Fri
It has been 1804 hours since https://github.com/PaddlePaddle/Paddle/issues/499 was filed at 2016-11-17T06:15:58 Thu
It has been 1827 hours since https://github.com/PaddlePaddle/Paddle/issues/486 was filed at 2016-11-16T07:54:15 Wed
It has been 1944 hours since https://github.com/PaddlePaddle/Paddle/issues/438 was filed at 2016-11-11T11:00:51 Fri
It has been 1978 hours since https://github.com/PaddlePaddle/Paddle/issues/415 was filed at 2016-11-10T00:36:11 Thu
It has been 1994 hours since https://github.com/PaddlePaddle/Paddle/issues/408 was filed at 2016-11-09T08:17:32 Wed
It has been 2020 hours since https://github.com/PaddlePaddle/Paddle/issues/395 was filed at 2016-11-08T07:07:16 Tue
It has been 2032 hours since https://github.com/PaddlePaddle/Paddle/issues/380 was filed at 2016-11-07T18:18:25 Mon
It has been 2039 hours since https://github.com/PaddlePaddle/Paddle/issues/376 was filed at 2016-11-07T11:15:26 Mon
It has been 2042 hours since https://github.com/PaddlePaddle/Paddle/issues/373 was filed at 2016-11-07T09:11:04 Mon
It has been 2310 hours since https://github.com/PaddlePaddle/Paddle/issues/272 was filed at 2016-10-27T05:54:19 Thu
It has been 2333 hours since https://github.com/PaddlePaddle/Paddle/issues/262 was filed at 2016-10-26T07:07:01 Wed
It has been 2333 hours since https://github.com/PaddlePaddle/Paddle/issues/261 was filed at 2016-10-26T07:05:38 Wed
It has been 2333 hours since https://github.com/PaddlePaddle/Paddle/issues/260 was filed at 2016-10-26T07:00:50 Wed
It has been 2333 hours since https://github.com/PaddlePaddle/Paddle/issues/257 was filed at 2016-10-26T06:55:54 Wed
It has been 2333 hours since https://github.com/PaddlePaddle/Paddle/issues/256 was filed at 2016-10-26T06:55:07 Wed
It has been 2334 hours since https://github.com/PaddlePaddle/Paddle/issues/252 was filed at 2016-10-26T05:47:03 Wed
It has been 2451 hours since https://github.com/PaddlePaddle/Paddle/issues/232 was filed at 2016-10-21T08:45:15 Fri
It has been 2519 hours since https://github.com/PaddlePaddle/Paddle/issues/222 was filed at 2016-10-18T12:24:46 Tue
It has been 2545 hours since https://github.com/PaddlePaddle/Paddle/issues/215 was filed at 2016-10-17T11:06:22 Mon
It has been 3207 hours since https://github.com/PaddlePaddle/Paddle/issues/96 was filed at 2016-09-19T20:54:08 Mon
It has been 3563 hours since https://github.com/PaddlePaddle/Paddle/issues/38 was filed at 2016-09-05T01:03:29 Mon
It has been 3602 hours since https://github.com/PaddlePaddle/Paddle/issues/35 was filed at 2016-09-03T09:21:45 Sat
It has been 3620 hours since https://github.com/PaddlePaddle/Paddle/issues/27 was filed at 2016-09-02T16:16:14 Fri

@reyoung
Copy link

reyoung commented Feb 4, 2017

#!/bin/bash
project="wangkuiyi/mapreduce-lite"
if [[ $# -ne 0 ]]; then
   project=$1
fi

issues_per_page=25
page=1
until [ $issues_per_page -lt 25 ]; do
    echo Parsing page: $page >&2

    url=$(printf 'https://github.com/%s/issues?page=%d' $project $page)
    url=$url+'&q=is%3Aissue'

    echo $url >&2

    issues_per_page=$(curl -s "$url" | grep "<a href=\"/$project/issues/" | grep 'class="link-gray-dark' | sed "s/^.*issues\/\([0-9]*\).*$/\1/" | tee issues.cache | wc -l)
    if [[ $issues_per_page -eq 0 ]]; then
	echo "Waiting for a while before retry talking to Github.com ..." >&2
        sleep 61
	issues_per_page=$(curl -s "$url" | grep "<a href=\"/$project/issues/" | grep 'class="link-gray-dark' | sed "s/^.*issues\/\([0-9]*\).*$/\1/" | tee issues.cache | wc -l)
    fi

    echo issues per page: $issues_per_page >&2
    let page=page+1

    for issue in $(cat issues.cache); do
	issue_url=$(printf 'https://github.com/%s/issues/%d' $project $issue)
	curl -s $issue_url > issue_page.cache
	comments_per_issue=$(cat issue_page.cache | grep -A 3 "commented" | grep 'relative-time' | sed "s/^.*datetime=\"\([^Z]*\).*$/\1/" | tee comments.cache | wc -l)
	author=$(cat issue_page.cache | grep  "class=\"author\">"| head -n 1 | sed "s/^.*class=\"author\">\([^Z]*\)\<\/a.*\$/\1/")
	state=$(cat issue_page.cache  | grep state | head -n 1| sed 's/.*"state state-\([^Z]*\)".*/\1/')
	if [[ $comments_per_issue -eq 1 ]]; then
	    current_sec=$(date +%s)
	    comment_time=$(head -n1 comments.cache)
	    comment_sec=$(date -j -f "%Y-%m-%dT%H:%M:%S" $comment_time +%s)
	    diff_sec=$(expr $current_sec - $comment_sec)
	    comment_day=$(date -j -f "%Y-%m-%dT%H:%M:%S" $comment_time +%a)
	    if [[ $diff_sec -gt 1800 ]]; then
		echo "It has been $(expr $diff_sec / 3600) hours since $issue_url was filed by $author at $comment_time $comment_day, state $state"
	    fi
	fi
    done

    sleep 2 # work around the Github abuse detection mechanism.
done

Add author and state in log.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment