我们有Slack的机器人,它将接受输入,例如:
bible John 3:17 (ESV)
这将转变为对
的调用 https://www.biblegateway.com/passage/?search=John+3:17&version=ESV
所以,我们现在所做的只是轻轻一点og.description
,例如,对于上述情况,我们得到:
curl 'https://www.biblegateway.com/passage/?search=John+3:17&version=ESV' | grep "og:description" | sed 's/.*content="//' | sed 's/".*//'
For God did not send his Son into the world to condemn the world, but in order that the world might be saved through him.
这适用于小型请求,例如bible John 3:1-4
- 但是,如果我们请求更大的部分,则描述字段会在某个点被截断。因此,如果我们要做bible John 3
,它只会返回John 1的前5个或更多的经文。
除了上面的卷曲之外,还有更好的方法吗?响应中唯一包含全文的地方是原始html,例如:
<h1 class="passage-display"> <span class="passage-display-bcv">John 3</span><span class="passage-display-version">English Standard Version (ESV)</span></h1> [ ... etc. etc. ... ]
我们应该只关注http请求吗?
答案 0 :(得分:1)
如果你想坚持使用oneliner,但是对于你刮掉的东西更精确,你可以尝试Mojolicious Perl项目。 Here's an example语法:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="fr.djey.secretapp.MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapse_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
android:fitsSystemWindows="true"
app:expandedTitleMarginStart="48dp"
app:expandedTitleMarginEnd="64dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image"
android:fitsSystemWindows="true"
app:layout_collapseMode="parallax"
android:scaleType="centerCrop"/>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_collapseMode="pin"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="fill_vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/lorem_ipsum"
android:textColor="@android:color/black"/>
</LinearLayout>
</android.support.v7.widget.CardView>
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_dialog_email" />
</android.support.design.widget.CoordinatorLayout>
这将解析标签中的文本。对于一行过于复杂的任务,请参阅Mojo web scraping example。
安装Mojolicious很容易:
perl -Mojo -E 'say g("mojolicious.org")->dom->at("title")->text'
即使您不了解Perl,您也可以将拼凑工作所需的内容拼凑在一起,因为如果您使用过jQuery,DOM遍历的语法可能会很熟悉。 / p>
答案 1 :(得分:0)
scripture_lookup的CLI非常快速且易于使用。
为普通的经文提供者提供一个干净的界面,例如Crossways ESV和Bible Gateway。
当前(默认)提供者是BibleGatewayScraper,它从圣经网关中撤回经文。